Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2014.10.26;
Скачать: [xml.tar.bz2];

Вниз

Помогите разработать алгоритм проверки поля в LINES   Найти похожие ветки 

 
HITMAN   (2014-03-12 20:53) [0]

Для вертикальный и горизонтальных алгоритм такой:
- Проходим в X-Y-цикле по каждой клетке, если она не занята, то проверяем начиная с этой клетки дальше по горизонтали количество таких же.
Если их 3 или больше, то уничтожаем.

А как сделать для проверки диагонали?


 
Pavia ©   (2014-03-12 20:57) [1]

В каком месте смеяться?


 
HITMAN   (2014-03-12 21:00) [2]


> Pavia ©   (12.03.14 20:57) [1]
>
> В каком месте смеяться?


Не нужно смеяться.

Не знаю как перебрать диагонали.


 
картман ©   (2014-03-12 21:11) [3]

а чем отличается следующая клетка по диагонали от вертикальных или горизонтальных?


 
HITMAN   (2014-03-12 21:14) [4]


> картман ©   (12.03.14 21:11) [3]
>
> а чем отличается следующая клетка по диагонали от вертикальных
> или горизонтальных?


Как цикл организовать?


 
Dimka Maslov ©   (2014-03-12 21:22) [5]

for i := ...


 
Dennis I. Komarov ©   (2014-03-12 21:35) [6]

А как поле закодировано? :)


 
HITMAN   (2014-03-12 21:37) [7]


> Dennis I. Komarov ©   (12.03.14 21:35) [6]
>
> А как поле закодировано? :)


2 мерный массив чисел, сэр.


 
Dennis I. Komarov ©   (2014-03-12 21:53) [8]

Трех бит для ячейки недостаточно, Сэр?


 
HITMAN   (2014-03-12 22:09) [9]


> Dennis I. Komarov ©   (12.03.14 21:53) [8]
>
> Трех бит для ячейки недостаточно, Сэр?


В смысле?
Одна ячейка это int.


 
Dennis I. Komarov ©   (2014-03-12 22:20) [10]

8 бит позволяют кодировать 8 состояний, зачем int?


 
Ega23 ©   (2014-03-12 22:21) [11]


> Трех бит для ячейки недостаточно, Сэр?


Зачем три бита?


 
Ega23 ©   (2014-03-12 22:21) [12]


> 8 бит позволяют кодировать 8 состояний, зачем int?


Зачем 8 состояний????


 
Ega23 ©   (2014-03-12 22:22) [13]

0 - пусто.
1..255 - один из 254 цветов.


 
HITMAN   (2014-03-13 00:25) [14]

Ячейка содержит не цвет, а тип в виде константы:

const TYPE_1: LongInt = 1;

А в какой цвет интерпретировать, это уже делает рендерер.


 
MBo ©   (2014-03-13 07:31) [15]

Диагональ вправо-вниз от точки (x0, y0) будет  (x0 + i, y0 + i)
Диагональ влево-вниз понятно, как сделать?


 
brother ©   (2014-03-13 07:53) [16]

> + i

имхо +1


 
antonn ©   (2014-03-13 07:58) [17]


> имхо +1

там же цикл


 
sniknik ©   (2014-03-13 09:49) [18]

> - Проходим в X-Y-цикле по каждой клетке, ...
> Если их 3 или больше, то уничтожаем.
имхо нужен не цикл, а рекурсия. и не "если - то уничтожаем", а "если - то ставим пометку на уничтожение и проверяем до конца, после чего уже уничтожение".
т.к. насколько помню lines там можно комбинации из "параллельно-диагональных" фигур делать, и они разом "схлопывались" а при такой линейной логике раннее уничтожение "сломает" "одномоментные линии".
ну вот например такая фигура, поставили последним шарик в угол... удалишь сразу верхнюю линию и диагональная не сработает.
00011111
10111111
11011111
11111111

не будет смысла в сложных фигурах на много шариков (а в линиях наоборот за это бонус был)


 
antonn ©   (2014-03-13 10:26) [19]


> имхо нужен не цикл, а рекурсия.

ну да, алгоритм тот же что при "заливке" (тетрисы, кликомании и тп)


 
Dennis I. Komarov ©   (2014-03-13 11:25) [20]


> Ega23 ©   (12.03.14 22:22) [13]
> 0 - пусто.
> 1..255 - один из 254 цветов.

Зачем тебе столько? :)


 
Dennis I. Komarov ©   (2014-03-13 11:42) [21]


> Dennis I. Komarov ©   (12.03.14 22:20) [10]
> 8 бит позволяют кодировать 8 состояний, зачем int?

Тут "3" конечно же..


> Зачем три бита?

А 7 цветов не достаточно?

9 x 9 x 3  - в 32 байта все уложить можно :)


 
Romkin ©   (2014-03-13 12:21) [22]

Вы думаете, что 81 ячейка по 4 байта - это ну очень критично по памяти?


 
Dennis I. Komarov ©   (2014-03-13 12:40) [23]


> Вы думаете, что 81 ячейка по 4 байта - это ну очень критично
> по памяти?

Нет, но алгоритмы будут разные...


 
Pavia ©   (2014-03-13 21:41) [24]


>
> Вы думаете, что 81 ячейка по 4 байта - это ну очень критично
> по памяти?

Сейчас модно компьютеры на транзисторах делать.
http://habrahabr.ru/post/179705/


 
Ega23 ©   (2014-03-13 22:29) [25]


> 9 x 9 x 3  - в 32 байта все уложить можно :)

Можно. И потом одуреть shl-shr прыгать.


 
Dennis I. Komarov ©   (2014-03-14 18:15) [26]

Зато для мозга полезно, особенно тем кто задает такие вопросы ;)


 
KSergey ©   (2014-03-19 11:55) [27]

Автор, помог ли совет ?


> MBo ©   (13.03.14 07:31) [15]
> Диагональ вправо-вниз от точки (x0, y0) будет  (x0 + i,
> y0 + i)
> Диагональ влево-вниз понятно, как сделать?


 
oldman ©   (2014-03-20 08:13) [28]


> ну вот например такая фигура, поставили последним шарик
> в угол... удалишь сразу верхнюю линию и диагональная не
> сработает.


а сразу и не удаляют.
метят ячейки на удаление, удаляют скопом.


 
sniknik ©   (2014-03-20 08:36) [29]

oldman ©   (20.03.14 08:13) [28]
читай весь пост, а не только комментарии примеров показывающих почему "так" делать нельзя...

------
не доходят смс-ки? перечитайте их еще раз!



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2014.10.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.002 c
15-1395378240
KSergey
2014-03-21 09:04
2014.10.26
Всплеск формирования доменных зон первого уровня


2-1383329935
dmitryl
2013-11-01 22:18
2014.10.26
dbisam


2-1383414170
Drowsy
2013-11-02 21:42
2014.10.26
После переустановки BDE.


15-1394643206
HITMAN
2014-03-12 20:53
2014.10.26
Помогите разработать алгоритм проверки поля в LINES


15-1394621616
Demo
2014-03-12 14:53
2014.10.26
Готовые решения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский