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

Вниз

Заполнение двумерного массива   Найти похожие ветки 

 
pavel_guzhanov ©   (2006-09-11 16:12) [0]

Помогите, что-то уже совсем сломал голову... Есть массив
var Numeral:array[1..5, 1..5] of integer;

Надо при загрузке программы заполнить его цифрами от 1 до 5, так чтобы Numeral[i,j] не повторялись ни по i, ни по j, т.е если представить массив в виде квадрата со сторонами 5х5, то чтобы по каждой горизонтали цифры не повторялись, и по каждой вертикали тоже. Надеюсь, что суть проблемы объяснил понятно :0))


 
Джо ©   (2006-09-11 16:14) [1]

 Counter := 0;
 for i := 1 to 5 do
   for j := 1 to 5 do
   begin
     Numeral[i,j] := Counter;
     Inc (Counter)
   end;


 
Джо ©   (2006-09-11 16:15) [2]

> заполнить его цифрами от 1 до 5

А, вот этого-то я и не заметил :)


 
Сергей М. ©   (2006-09-11 16:17) [3]

Судоку изобретаешь ?)


 
Barloggg   (2006-09-11 16:18) [4]

Джо, неверно. по условию Counter не должен быть больше 5.
это вопрос на поиск.
суть я понял, но простой проверкой тут не обойдешься.
аналитического решения я не знаю, можно попробовать численное... что-то вроде задачки на "безопасное" размещение 8 ферзей на доске... но не сегодня.


 
pavel_guzhanov ©   (2006-09-11 16:20) [5]


> Судоку изобретаешь ?)


ага... на досуге :0))


 
Barloggg   (2006-09-11 16:20) [6]

элементарно.
ответ вот:
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4

код вот
for i := 1 to 5 do begin
  Counter := i;
  for j := 1 to 5 do
  begin
    Numeral[i,j] := Counter;
    Inc (Counter)
    if counter>5 then counter:=1;
  end;
end;


 
Наиль ©   (2006-09-11 16:21) [7]

for i := 1 to 5 do
for j := 1 to 5 do Numeral[i,j] := (i+j-1) mod 5 +1;


 
evvcom ©   (2006-09-11 16:48) [8]

> [5] pavel_guzhanov ©   (11.09.06 16:20)

На фига? Уже есть классный Simple Sudoku :-)


 
MBo ©   (2006-09-11 17:18) [9]

Существует 161280 таких квадратов...


 
pavel_guzhanov ©   (2006-09-12 08:21) [10]


> На фига?


а нафига люди сапера пишут? Есть же уже, причем в windows входит. Еще люди часто пишут замену блокноту...
На самом деле, пока на работе появилось свободное время, решил поупражняться в игроделании. А судоку - все-таки достаточно хитрый алгоритм размещения придумать надо, интересно... Правда вот уже за помощью обратился сюда, видимо собственной хитрости не хватило :0))


 
evvcom ©   (2006-09-12 08:50) [11]

> [10] pavel_guzhanov ©   (12.09.06 08:21)

Размещение фигня, вот алгоритмы поиска решения - вот это будет да... Ты все ж закачай себе Simple Sudoku и попробуй его порешать. Какие-нить multicolors или задачки уровня экстрим... То что печатают в газетах - для детского сада, здесь же ого-го задачки есть.


 
Barloggg   (2006-09-12 08:56) [12]

да фигня это судоку.
перерисовываешь на отдельный листик, потом на полях делаешь обвязку по столбцам и строкам а потом сливаешь все в одно.
даже думать не надо.

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


 
evvcom ©   (2006-09-12 09:12) [13]

> [12] Barloggg   (12.09.06 08:56)

Это ты о методах решения? Не боишься, что задачку подкину, что месяц будешь на бумажке обвязывать? И что значит "обвязывать" и "решать в лоб"? В чем разница?


 
Barloggg   (2006-09-12 15:35) [14]

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

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

а решать "в лоб" это ничего постороннего не писать а делать все прикидки в уме и вписывать в ячейки уже готовый результат.

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


 
evvcom ©   (2006-09-12 16:04) [15]

> [14] Barloggg   (12.09.06 15:35)

Рандомизатором, вероятно, ты нескоро выйдешь на твердый орешек.
Тот Simple Sudoku имеет готовые задачи, названные по методам, которые используются при их решении, а также есть рандомизатор, но с 5 опциями вплоть до эксперт и экстрим. Вот на этих уровнях бывает долго ищешь решение. Но я получается решал их "в лоб", без матриц. С матрицами пока идею не понял, что в них должно быть.


 
Barloggg   (2006-09-12 17:26) [16]

все очень просто.
выписываешь в центр листа исходную матрицу.

потом справа выписываешь недостающие цифры в строках
потом сверху выписываешь недостающие цифры в столбцах
потом снизу делаешь такую же по размерам матрицу, но в клетках выписываешь недостающие цифры в клетках.

после чего ищешь пересечение всех трех одинаковых цифр.
нижняя матрица укажет в какой клетке должна быть цифра, правая в какой строке, верхняя - в каком столбце. имея клетку+строку+столбец думать уже не нужно.
по мере заполнения недостающих цифр отработавшие свое цифры зачеркиваешь.
и всего делов.

конечно тоже можно запутаться, если постараться...

я очень долгое время развлекался на так называемых "японских сканвордах"... это как раз тот метод.


 
evvcom ©   (2006-09-12 18:35) [17]

> [16] Barloggg   (12.09.06 17:26)

И все? :-)))
Эту рутину Simple Sudoku делает за тебя, отображая в каждой пустой клетке возможные варианты цифр. Кроме того, дает тебе возможность из этих вариантов исключить что-либо еще на основании твоих умозаключений. Позволяет выделять цветом все ячейки, в которых может быть, например, 1. И даже после всего этого сервиса над некоторыми задачками приходится долго пыхтеть, выискивая фигуры, на основании которых ты однозначно можешь исключить из какой-либо ячейки цифру.
Я после газетных задач тоже сначала было подумал, что здесь все элементарно. Потом как-то наткнулся на задачу, которую не получалось решить без перебора. Поискал в интернете, нашел эту прогу. Она показала мне на той задаче несколько вариантов решений. Я стал решать задачки из ее коллекции и только тогда понял, что не все так просто.
Сегодня нет, а завтра вечерком подберу тебе пару задачек на разные фигуры, над которыми ты "умрешь" со своими матрицами. И только почитав о способах поиска решения, ты сможешь их решить.


 
evvcom ©   (2006-09-15 08:28) [18]

> [16] Barloggg   (12.09.06 17:26)

Держи задачку:
-6- 1-- 75-
--- --- 2-8
9-- --- 614

-95 3-- ---
--- 2-8 ---
--- --7 18-

679 --- --1
1-8 --- ---
-24 --3 -7-
успехов с бумажкой :)



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

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

Наверх




Память: 0.51 MB
Время: 0.053 c
2-1157964000
kirik
2006-09-11 12:40
2006.10.01
Шо за фигня с треем?


2-1157839282
progdev
2006-09-10 02:01
2006.10.01
Оптимальный методь поиска в тхт файлов


2-1157969374
Alex_KV
2006-09-11 14:09
2006.10.01
Про SetLength


2-1157705136
ptr_fm
2006-09-08 12:45
2006.10.01
blob sql


2-1158235468
alexandrine
2006-09-14 16:04
2006.10.01
DBLookupComboBox