Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

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

 
Ata133 ©   (2004-10-07 16:04) [0]

Есть сетка с цифрами 0-9 изначально в ячейках (каждый раз размер сетки меняется, поэтому храню ее так: "a: Array Of Array Of Byte"). Как мне разбавить эту сетку цифрами "10", причем, чтобы в каждой строке/столбце расстояние между ближайшими "10" было не больше заданного S, а также не было замкнутых областей с обычными цифрами, т.е. чтобы от любой цифры 0-9 в сетке можно было "добраться" (не через "10") к любой другой цифре массива от 0 до 9. К тому же наборы цифр (с "длинной" In [2..S]) по горизонтали/вертикали от одной "10" (или от первого элемента массива) до другой "10" (либо до последнего элемента) не должны повторяться во всем массиве как по горизонтали так и по вертикали.

Вариант есть, но очень уж громоздкий получился. Может кто-нть что-нть подсказать?


 
Ata133 ©   (2004-10-15 11:50) [1]

Удалено модератором


 
palva ©   (2004-10-15 14:35) [2]

Я, правда не мастер, но отзовусь. Может у меня с головой не в порядке, но я ничего не понял.

Что такое сетка, я, кажется догадался, это что-то вроде Grid, а вот дальше... Почему важен метод хранения? В какой момент размеры сетки меняются? Что такое разбавить - это раздвинуть или заменить? Что такое первый элемент массива - какого массива? Что такое расстояние между цифрами 10, если они не на одной вертикали или горизонтали? Что такое "добраться" (не через "10") - типа если десятки стоят по диагонали, то можно преодолеть эту диагональ? Ну и т. д.


 
Ata133 ©   (2004-10-26 16:40) [3]

To: Palva

>> Почему важен метод хранения?
Да не важен собственно, просто много операций с данными, поэтому обрабатываю в памяти в дин.массиве, а после всех операций уже можно хоть на диск записывать.

>> В какой момент размеры сетки меняются.
Только в начале работы процедуры. В процессе - не меняется.

>> Что такое разбавить - это раздвинуть или заменить?
Заменить текущее значение в клетке на "10"

>> Что такое первый элемент массива - какого массива?
В моем случае сетка = двумерному дин.массиву, т.е. здесь - это одно и тоже.

>> Что такое расстояние между цифрами 10, если они не на одной вертикали или горизонтали?
Такое рассотяние не надо учитывать. Меня интересует только по "каждой строке/столбце"...

>> Что такое "добраться" (не через "10")?
Двигаться можно только на клетку вправо, влево, вверх или вниз, т.е. по диагонали - нельзя.

Спасибо за ответ )))


 
Ega23 ©   (2004-10-26 16:49) [4]

А зачем Aray of array of byte?


 
Ata133 ©   (2004-10-27 11:17) [5]

To: Ega23
>> А зачем Aray of array of byte?
Ну я начинающий Delphist, поэтому других способов не знаю. А как еще динамический массив можно создать?


 
TUser ©   (2004-10-27 11:24) [6]


> Что такое сетка, я, кажется догадался, это что-то вроде
> Grid

Наверное, просто 2d массив - array of array of byte


 
Ega23 ©   (2004-10-27 11:35) [7]

Я через TList это всё делал. Индекс вычисляется элементарно, массив - одномерный, проблем - никаких. Вообще написать класс типа матрицы и не париться...


 
Ata133 ©   (2004-10-29 12:24) [8]

To: TUser
ну да... )))

To: Ega23
а вот с этого момента можно поподробнее? )) Как написать класс типа матрицы ?


 
Ata133 ©   (2004-11-01 17:23) [9]

To: Ega23
Ну и как это сделать?


 
Ega23 ©   (2004-11-01 17:34) [10]

Ну как-как.. Сначала определись, что ты хочешь. Каким образом будешь задавать размер? Как загонять данные? Какого типа данные?
И т.п.


 
Ata133 ©   (2004-11-02 09:52) [11]

Размер и S задается с помощью SpinEdit"ов на форме. Больше никаких данных от пользователя не требуется. Тип Byte. Потом нажимается пользователем кнопка "Создать" и запускается процедура, над которой я и бьюсь. Сначала создается 2D массив и заполняется полностью цифрами 0, а вот потом начинается самое интересное. Вообщем, это должен быть в идеале кроссворд только числовой, 10 - обозначают стенки кроссворда, вот мне и надо, чтобы кроссоврд был размером MxN, а длина каждого загаданного числа не больше задаваемого S. Хорошо бы, чтобы еще числа не начинались с 0. ))


 
Ata133 ©   (2004-11-05 17:53) [12]


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-11 14:56) [13]

To Ega23:
Ну напиши хоть как "Вообще написать класс типа матрицы и не париться..."


 
Ega23 ©   (2004-11-11 15:13) [14]

egorov@dedal.dubna.ru
Пиши.



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

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.031 c
6-1095423432
Uran
2004-09-17 16:17
2004.11.28
Как зарегестрировать ActiveX Server на клиенте


3-1099162141
Мирон
2004-10-30 22:49
2004.11.28
Как узнать кол-во удаленных записей в процедуре


6-1092273550
piople
2004-08-12 05:19
2004.11.28
CGI + JavaScript


14-1100193273
Викусик
2004-11-11 20:14
2004.11.28
А у меня тоже задачка...


3-1098630775
Настенька!!!
2004-10-24 19:12
2004.11.28
многострочность dbgrid (не в заголовках)