Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
ВнизЗаполнение двумерного массива Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.011 c