![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разработать алгоритм [D5, WinXP]
Ata133 © (2004-10-07 16:04:00)Есть сетка с цифрами 0-9 изначально в ячейках (каждый раз размер сетки меняется, поэтому храню ее так: "a: Array Of Array Of Byte"). Как мне разбавить эту сетку цифрами "10", причем, чтобы в каждой строке/столбце расстояние между ближайшими "10" было не больше заданного S, а также не было замкнутых областей с обычными цифрами, т.е. чтобы от любой цифры 0-9 в сетке можно было "добраться" (не через "10") к любой другой цифре массива от 0 до 9. К тому же наборы цифр (с "длинной" In [2..S]) по горизонтали/вертикали от одной "10" (или от первого элемента массива) до другой "10" (либо до последнего элемента) не должны повторяться во всем массиве как по горизонтали так и по вертикали.
Вариант есть, но очень уж громоздкий получился. Может кто-нть что-нть подсказать?
Ega23 (2004-11-11 15:13:00) [1]egorov@dedal.dubna.ru
Пиши.
Ata133 (2004-11-11 14:56:00) [2]To Ega23:
Ну напиши хоть как "Вообще написать класс типа матрицы и не париться..."
Ata133 (2004-11-05 17:53:00) [3]
5 6 7 4 7 2 2 10 ...
0 10 2 4 6 10 10 10 ...
3 10 5 0 3 2 7 1 ...
10 2 8 9 10 0 10 8 ...
10 10 7 10 9 10 10 9 ...
...
Ata133 (2004-11-02 09:52:00) [4]Размер и S задается с помощью SpinEdit'ов на форме. Больше никаких данных от пользователя не требуется. Тип Byte. Потом нажимается пользователем кнопка "Создать" и запускается процедура, над которой я и бьюсь. Сначала создается 2D массив и заполняется полностью цифрами 0, а вот потом начинается самое интересное. Вообщем, это должен быть в идеале кроссворд только числовой, 10 - обозначают стенки кроссворда, вот мне и надо, чтобы кроссоврд был размером MxN, а длина каждого загаданного числа не больше задаваемого S. Хорошо бы, чтобы еще числа не начинались с 0. ))
Ega23 (2004-11-01 17:34:00) [5]Ну как-как.. Сначала определись, что ты хочешь. Каким образом будешь задавать размер? Как загонять данные? Какого типа данные?
И т.п.
Ata133 (2004-11-01 17:23:00) [6]To: Ega23
Ну и как это сделать?
Ata133 (2004-10-29 12:24:00) [7]To: TUser
ну да... )))
To: Ega23
а вот с этого момента можно поподробнее? )) Как написать класс типа матрицы ?
Ega23 (2004-10-27 11:35:00) [8]Я через TList это всё делал. Индекс вычисляется элементарно, массив - одномерный, проблем - никаких. Вообще написать класс типа матрицы и не париться...
TUser (2004-10-27 11:24:00) [9]
> Что такое сетка, я, кажется догадался, это что-то вроде
> Grid
Наверное, просто 2d массив - array of array of byte
Ata133 (2004-10-27 11:17:00) [10]To: Ega23
>> А зачем Aray of array of byte?
Ну я начинающий Delphist, поэтому других способов не знаю. А как еще динамический массив можно создать?
Ega23 (2004-10-26 16:49:00) [11]А зачем Aray of array of byte?
Ata133 (2004-10-26 16:40:00) [12]To: Palva
>> Почему важен метод хранения?
Да не важен собственно, просто много операций с данными, поэтому обрабатываю в памяти в дин.массиве, а после всех операций уже можно хоть на диск записывать.
>> В какой момент размеры сетки меняются.
Только в начале работы процедуры. В процессе - не меняется.
>> Что такое разбавить - это раздвинуть или заменить?
Заменить текущее значение в клетке на "10"
>> Что такое первый элемент массива - какого массива?
В моем случае сетка = двумерному дин.массиву, т.е. здесь - это одно и тоже.
>> Что такое расстояние между цифрами 10, если они не на одной вертикали или горизонтали?
Такое рассотяние не надо учитывать. Меня интересует только по "каждой строке/столбце"...
>> Что такое "добраться" (не через "10")?
Двигаться можно только на клетку вправо, влево, вверх или вниз, т.е. по диагонали - нельзя.
Спасибо за ответ )))
palva (2004-10-15 14:35:00) [13]Я, правда не мастер, но отзовусь. Может у меня с головой не в порядке, но я ничего не понял.
Что такое сетка, я, кажется догадался, это что-то вроде Grid, а вот дальше... Почему важен метод хранения? В какой момент размеры сетки меняются? Что такое разбавить - это раздвинуть или заменить? Что такое первый элемент массива - какого массива? Что такое расстояние между цифрами 10, если они не на одной вертикали или горизонтали? Что такое "добраться" (не через "10") - типа если десятки стоят по диагонали, то можно преодолеть эту диагональ? Ну и т. д.
Ata133 (2004-10-15 11:50:00) [14]Удалено модератором