![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Игрок
Форумчанин
Регистрация: 29.10.2006
Сообщений: 367
|
![]()
Привет всем. Собственно задача классическая и думаю все поняли что мне нужно, но на всякий случай поясню. Мне нужна программа, которая рассчитывает путь шахматного коня из заданной точки для обхода всей доски. Не наступив дважды на одно поле. На алгоритмическом языке - все просто. Написал бы за пару минут. А тут вот никак. Вообще для обхода конем поля нужно придерживаться правила: Каждый раз шагать на клетку, из которой наименьшее число ходов. Я попытался привести все к алгоритмам, но что то пока никак. Реализовал матрицу, получение и изменение произвольного элемента, генерацию пустого поля, вывод и проверку возможности хода. Но я понимаю. что это не правильно. Ведь это логическое программирование. Помогите разобраться.
P.S. в поиск не посылайте. Был уже. Ничего толкового не нашел.
Жизнь всегда игра. Но смерть - не всегда поражение.
#define true (Math.random()>0.5) //Удачной отладки ![]() |
![]() |
![]() |
![]() |
#2 |
Игрок
Форумчанин
Регистрация: 29.10.2006
Сообщений: 367
|
![]()
Мда, я разочарован в этом форуме, хоть и могу считать себя старожилом. Ну что ж, тогда я прошу отписаться участников с репутацией больше 100 о том, что они не в силах мне помочь. А то вдруг пропустили темку....
Жизнь всегда игра. Но смерть - не всегда поражение.
#define true (Math.random()>0.5) //Удачной отладки ![]() |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 04.02.2009
Сообщений: 18,136
|
![]()
Я не в силах тебе помочь
![]() Насчет форума, то ничего страшного здесь нет. Форум делает упор на Дельфи и С++, поэтому найти нужного Вам специалиста сложно. Вы же к проктологу зубы дергать не ходите? Так что Ваша обида не обоснована.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
![]()
когда-то давно мучалась с этой задачей, прога в итоге заработала, но вот исходник найти не могу, помню только что большую часть решения находила инете.
Единственное, что ограничивает полет мысли программиста-компилятор
|
![]() |
![]() |
![]() |
#5 |
Игрок
Форумчанин
Регистрация: 29.10.2006
Сообщений: 367
|
![]()
я по большому счету решил. Баги есть, но это вопрос времени. Проблема в том, что я решаю задачу - математически. А надо что бы пролог сам мне ее решил. То есть как то объяснить прологу что я хочу )))
Жизнь всегда игра. Но смерть - не всегда поражение.
#define true (Math.random()>0.5) //Удачной отладки ![]() |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 04.05.2010
Сообщений: 495
|
![]()
Вот твоя задача.
http://www.progz.ru/t36025/ А я ее даже на Turbo Prolog 2 перевел. Решает твою задачу на доске 6х6 за секунды. На больших надолго задумывается! Код:
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948 |
![]() |
![]() |
![]() |
#7 |
Игрок
Форумчанин
Регистрация: 29.10.2006
Сообщений: 367
|
![]()
Спасибо конечно! Но тут грубый перебор. На доске например 30х30 я буду ждать годами. Нужно придерживаться правила, что я написал в первом посте. Тогда обход совершается с первого раза.
Жизнь всегда игра. Но смерть - не всегда поражение.
#define true (Math.random()>0.5) //Удачной отладки ![]() |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 04.02.2009
Сообщений: 18,136
|
![]()
Ну я же предложил идею - последовательность это константа, которая забита вручную. Далее Вам нужно только сделать пересчет в случае если конь изначально прыгает из другой клетки. Ну как-то так примерно.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#9 |
Игрок
Форумчанин
Регистрация: 29.10.2006
Сообщений: 367
|
![]()
последовательности нет в общем то. Да и смысл теряется, если что то ручками вбивать. Надо рассчитать.
Жизнь всегда игра. Но смерть - не всегда поражение.
#define true (Math.random()>0.5) //Удачной отладки ![]() |
![]() |
![]() |
![]() |
#10 |
Игрок
Форумчанин
Регистрация: 29.10.2006
Сообщений: 367
|
![]()
Код не совсем правильный, потому что не использует возможности пролога и не оптимизирован. На поле 6х6 вылетает ошибка переполнения стека. Но смысл остается. И работает нормально.
Код:
Жизнь всегда игра. Но смерть - не всегда поражение.
#define true (Math.random()>0.5) //Удачной отладки ![]() |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание своего класса в Delphi 7 - фигуры для шахматной доски | electric | Компоненты Delphi | 18 | 24.10.2013 15:06 |
Ход конем на Си | Ekатерина | Помощь студентам | 2 | 02.05.2010 15:41 |
ход конем | Zuuu92 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 29.04.2010 22:16 |
Обход конем шахмотной доки | Evgeniy21 | Помощь студентам | 1 | 28.01.2010 01:16 |