![]() |
eXeL@B —› Вопросы новичков —› Решение игры типа сапера.Интересная. Для умных) |
Посл.ответ | Сообщение |
|
Создано: 06 марта 2010 20:10 · Личное сообщение · #1 Всем привет! Я, к сожалению, крэком не занимаюсь,но случайно на вашем форуме нашел пост, что есть люди, интересующиеся написанием программ для решения логических задач. Собственно, есть ли у кого какие мысли, как можно решить следующую задачу? Задача- симбиоз змейки и сапера)) Дано поле с ячейками. вы находитесь в центре поля, вас окружают 8 ячеек. В каждой ячейке есть цифра.Щелкая на любую из ячеек, вы продвигаетесь на кол-во клеток,равное числу в ячейке, в выбранном направлении.Там вас опять окружают 8 ячеек. Задача пройти по всему полю, не врезаясь в себя и не вылетая за границы поля. Если идти по диагонали, то потом себя можно перепрыгнуть в определенных местах. Ребята, очень надо решить задачу. За актуальную помощь готов даже вознаградить=)) Скрин поля прикреплю, могу выложить и саму игру. Спасибо, если дочитали до сюда. p.s.: модерам. извините, если запостил не той ветке. ![]() |
|
Создано: 06 марта 2010 20:25 · Личное сообщение · #2 |
|
Создано: 06 марта 2010 20:25 · Личное сообщение · #3 |
|
Создано: 06 марта 2010 20:26 · Личное сообщение · #4 |
|
Создано: 06 марта 2010 23:01 · Личное сообщение · #5 |
|
Создано: 06 марта 2010 23:10 · Личное сообщение · #6 |
|
Создано: 06 марта 2010 23:28 · Личное сообщение · #7 Coderess пишет: Сапер уже много кто пробовал решить, использовалось внедрение в память процесса и все методы, которые мне попадались были с исходными кодами это не сапер...внедрения в память не надо, т.к. тут решать надо чисто через комбинаторику..ну это как я вижу..хотя я в таких вопросах не особо разбираюсь. Archer пишет: В принципе можно читать память процесса, считывать всё поле. Ползти в любое рандомное направление. Если застрял, откатывать на шаг назад и идти в другое рандомное. Типа брута поля. да, я так и думаю. но опять же, ПОЛЕ СТАТИЧНО(!!), т.е. оно не меняется от раза к разу. а очень ли сложно будет выполнить то, что вы описали? если есть 8 направлений в каждой точке, а длина перемещения может варьироваться от 1 до 12 клеток. Вот сама игра: wc3acc.narod.ru/game.swf ![]() |
|
Создано: 09 марта 2010 21:49 · Личное сообщение · #8 |
|
Создано: 09 марта 2010 23:42 · Личное сообщение · #9 что возможно заполнить всё поле где сказано? игра на очки и не обязательно что поле возможно заполнить, если это не учтено алгоритмом генерации Брут сделать можно, насколько реально будет время выполнения сложно оценить, но думаю нормально главное заинтересовать программиста, а если бы было чем, думаю цена бы светилась уже в первом посте ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 12 марта 2010 10:57 · Личное сообщение · #10 |
|
Создано: 12 марта 2010 16:18 · Личное сообщение · #11 |
|
Создано: 13 марта 2010 13:30 · Личное сообщение · #12 3047 очков! Кто больше? ![]() Получено с помощью нижеприлогаемой программы (алго на базе рекурсии). Пилит варианты очень долго, до конца не дождался. Так что это вероятно далеко не максимум. ![]() ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 13 марта 2010 22:27 · Поправил: OKOB · Личное сообщение · #13 Версия с полным логом поиска. SaperFullLog.exe > Log.txt !!! Осторожно скорость формирования лог файла 1,5 гига в минуту Формат лога: Level 003( 23, 4) -> NORD ; VALID; SUCCESS (2) ####### Level 004( 23, 2) -> NORD ; VALID; DON'T SUCCESS (11) Level 003 - номер хода (уровень вложенности рекурсии) ( 23, 4) - координаты текущей базовой точки NORD... - направление хода VALID/ DON'T VALID - статус возможности хода в данном направлении SUCCESS / DON'T SUCCESS - результат хода (2) - длина текущего хода ![]() ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 14 марта 2010 00:17 · Личное сообщение · #14 |
|
Создано: 14 марта 2010 01:25 · Поправил: OKOB · Личное сообщение · #15 Isaev пишет: лучший вариант рекорда то был наёден? Лучше вариант есть. На скрине вариант на 139 ходов и 539 поинтов, следующий который находится 135 ходов на 543 поинта, но из-за буферизации виндой вывода в логфайл до нахождения следующего возможного рекорда в нем (логе) видны не все ходы. А так времени жалко. Вариантов слишком много при 139-ти ходах и 8-ми направлениях это 8**139 = 3,3846065602060728266338063771278e+125 вариантов. Так что максимум локальный, а поиск глобального мало реален. Видно что со стартовой точки направление СЕВЕР (т.е. первое из восьми) (перебор направлений от СЕВЕРА по часовой стрелке). PS: Заставил программу при нахождении максимума на 543 поинта вытолкнуть лог. Вот результат ходов. Видно что оптимизируется укладка только ближе к голове "змеики", а хвосты совпадают полностью. Так что поле для улучшения результата есть. ![]() PSS: Ручками-глазками немного уплотнил в начале. ![]() А вообще топ не имеет отношения к реверсу, да и исчерпал себя ибо задача поставленая топикстартером решена - алго реализовано. Топ полноправный кандидат на закрытие. ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 14 марта 2010 04:25 · Личное сообщение · #16 |
|
Создано: 14 марта 2010 12:19 · Личное сообщение · #17 Вариантов слишком много при 139-ти ходах и 8-ми направлениях это 8**139 = 3,3846065602060728266338063771278e+125 вариантов И что там для 139 ходов мало отсекается? Да и направлений всего 7 Писать лог кстати сильно замедляет поиск. Даю идею. Строим матрицу NxN, где N - число полей. В ячейке (i,j) очки/расстояние (лень условие перечитывать). Далее делается хитрое умножение(складываем содержимое ячеек) на транспонированную матрицу и получаем оценку "двухходовок". И т.д и т.п. Матрицы придется хранить, но это меньше чем лог и можно придумать экономную запись. Если в ячейки писать больше инфы, то можно сразу отловить запрещенные пути. Уже охота прогу написать, но пока лень. ![]() |
|
Создано: 14 марта 2010 13:50 · Поправил: OKOB · Личное сообщение · #18 |
|
Создано: 15 марта 2010 01:29 · Личное сообщение · #19 |
|
Создано: 15 марта 2010 01:42 · Личное сообщение · #20 |
|
Создано: 15 марта 2010 03:09 · Личное сообщение · #21 |
|
Создано: 15 марта 2010 11:35 · Личное сообщение · #22 |
![]() |
eXeL@B —› Вопросы новичков —› Решение игры типа сапера.Интересная. Для умных) |