Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1157741398
lobach
2006-09-08 22:49
2006.10.01
Компонент


1-1155834928
APOSTOL
2006-08-17 21:15
2006.10.01
TrichEdit как сделать курсор в виде прямоугольника?


2-1157707753
Тыгыдым
2006-09-08 13:29
2006.10.01
Работа с записями


15-1157865825
vikont_semenov
2006-09-10 09:23
2006.10.01
От студента


2-1157716372
Galiaf
2006-09-08 15:52
2006.10.01
присвоение данных из ф-ции





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский