:: Игры Разума
Игра для развития программистского мышления
leonid
Автор

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Здесь уже выкладывались ссылки на игры, вот еще одна, с программистским уклоном

www.addictinggames.com

Ну, кто меньше?
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
Zakharov_slava

Сообщений: 2022
Откуда: Алматы
Дата регистрации: 14.10.2005
У меня с первого раза 188 оказалось
У кого сколько то? К чему стремится?
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
Prudivus

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
175, но это от увлечениями функциями на первых этапах. Поначалу непонятно было чего должно быть меньше - команд или шагов. Сейчас переиграю, думаю будет около 170.
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
leonid
Автор

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
170 - неплохой результат, а вообще было бы интересно видеть не только конечный результат, но и разбивку по уровням. Подозреваю, что у некоторых могут быть одни уровни лучше, а у других - другие. Я лично за оптимальность своего 10 уровня сильно сомневаюсь, да и некоторые другие тоже вызывают сомнения.
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
171! Правда, со второго захода. Вчера не въехал сразу в смысл и закончить не успел - прошёл 8 уровней.

1 - 3
2 - 10
3 - 9
4 - 11
5 - 11
6 - 19
7 - 14
8 - 16
9 - 14
10 - 24 - тут уже затупил
11 - 23
12 - 17

Интересно, на 11 уровне (8х8 со ступеньками) можно ли было применить рекурсивную функцию? я не смог придумать как это сделать. Понятно, что поскольку нет условного оператора, рекурсия будет бесконечной, но у нас есть неявный останов программы - по достижению цели.

Вообще, идея классная. И нарисовано хорошо. Туда бы ещё возможность сохранить-загрузить программу, таблицу рекордов, уровней побольше - и прощай работа!
Можно ещё скрестить с идеей старинной игрушки Zoko-Ban - чтоб можно было некоторые блоки двигать или сделать интерфейс для более серьёзного развлечения - проверки внешних планировщиков.

Не говоря о чудесных задачах (особенно для последних уровней) - оптимальный план (по кол-ву шагов программы, по кол-ву выполненных действий).

Короче, понесло меня - вспомнил свою первую специализацию...



Исправлено 1 раз(а). Последнее : matod, 26.09.09 08:39
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
А я тупой - 190 Правда особо не заморачивался, только 10-й уровень реально долго мучил, по большей части методом ненаучного тыка Кажись за 23 шага вышло.

Насчёт рекурсии - не пройдёт т.к. не останавливается при достижении цели А к реализации есть претензия - игровое поле нельзя крутить - на 10-м уровне это напрягает - пришлось "проверять" роняя человечка за горизонт

P.S. Сокобан реально более интересная штука (правда длинные "тривиальные" уровни напрягают), на КМК как раз прошёл уровней 150 и тоже посетила дурная идея сделать "автомат" для поиска наилучших решений


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
Цитата:
Насчёт рекурсии - не пройдёт т.к. не останавливается при достижении цели
И точно! Ну, это они зря... Так, наверное, можно было бы найти интересные решения.
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
Prudivus

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
Так как 10-й уровень самый сложный, предлагаю поделиться вариантами его решения. Хотя, есть подозрение, что вариант там один, уж больно все заморочено. Итак, мой путь: доходим до нижней ступеньки, запрыгиваем на неё, еще два прыжка до верхней, поворот направо, прыжок, прыжок вниз, шаг вперед, зажгли фонарь, поворот направо, спрыгиваем, проходим до угла, поворот направо, доходим до ступеньки, запрыгиваем... ну и дальше путь единственный, не буду описывать. Применяется две функции: одна с поворотом направо, другая - с поворотом налево (в конце её может вызываться первая).
Вот примерно так, если не напутал (пишу по памяти).
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
Цитата:
Хотя, есть подозрение, что вариант там один, уж больно все заморочено.
Что за пессимизм, известно же, что решений может быть несколько
У меня не получилось повторить твой вариант менее чем за 27 шагов, может я чего-то не разглядел. Мы пойдём другим путём!

Вот решение за 24 шага (R - право, L - лево, * - зажечь, S - шаг, ^ - прыг, F - f1, G - f2).
MAIN: F L ^ L S R ^ F L F G
F : S S S * ^ L ^ ^
G : R ^ ^ S *

Идея в том, чтобы сперва зажечь левую лампу. Тогда первый отрезок пути, на который нужно много команд, проходится 2 раза и оформляется ф-ей F1 (путь до верхней ступеньки от начальной точки). Добавив внуть функции команду "зажечь" получили еще небольшую экономию - на последнем отрезке пути до левой лампы и возврата в начальную точку можно использовать эту же функцию. После возврата, остается повернуть налево, опять F1, и затем F2 - 5 - командный путь от верхней ступеньки до правой лампы.

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

Чтобы восстановить алгоритм 10 уровня, пришлось еще раз пройти игру. На 6 и 8 уровне удалось немного соптимизировать.

Результат: 168 (3, 10, 9, 11, 11, 17, 14, 15, 14, 24, 23, 17).
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
leonid
Автор

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
matod
Что за пессимизм, известно же, что решений может быть несколько
Я оптимист, думаю, что различных решений - сотни. Я проходил четырьмя различными путями, за 28, 27, 26, 25, 24 шага, причем о дороге, которой прошел Андрей, я даже и не подумал. Вот за 24 шага.

MAIN: G F R ^ G L L S G R F G
F: ^ L ^ ^
G: S L S R ^ S S *

Свой результат: 161 (3, 9, 9 10, 11, 15, 13, 13, 14, 24, 23, 17).

А вот насчет рекурсии Вы не правы. Можно ее использовать. Но тут все становится совсем непонятно. Я так и не знаю, в какой момент игра проверяет, что все лампочки включены, но делает она это не только по завершению алгоритма. Знаю, что используя рекурсию, эту игру можно пройти за 132. Но сам ее не использовал. Простенькие примеры, вроде

MAIN: S S * S F
F: F

показывают, что игра не останавливается.
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
2leonid
161 - круто! - есть к чему стремится. Как-нить еще попробую

Функция G хороша - я прошел мимо идеи включить в нее L и R чтобы направление сохранялось, только "левая" и "правая" функции. Интересно 24 - предел?

Цитата:
А вот насчет рекурсии Вы не правы. Можно ее использовать.
- откуда информация (и насчет 132)? У меня рекурсивные зацикливались...
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
leonid
Автор

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
matod
Интересно 24 - предел?

Нет, конечно. По Вашему пути и за 22 можно:

MAIN: F L G L ^ L F R G
F: G S ^ L G
G: ^ L S R ^ S S *

Цитата:
Цитата:
А вот насчет рекурсии Вы не правы. Можно ее использовать.
- откуда информация (и насчет 132)?

Информация с Youtube. Легко там найти ролик с проходом.

Цитата:
У меня рекурсивные зацикливались...

У меня тоже. Поэтому я все делал без них. И даже после того, как увидел ролик, не мог понять, почему там программа останавливается. Но кажется, наконец, понял. Проверка на то, что все синие поля включены, происходит не только в момент завершения программы, но и при завершении работы каждой функции. Это легко проверит на первом этапе. Вот эта программа зацикливается

MAIN: S S * S F
F: F
G:

а вот эта нет

MAIN: S S * S F
F: G F
G: S

Таким образом остановом зацикливания можно управлять. Кстати в ролике 10 этап проходится за 17.
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
Prudivus

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
Цитата:
Свой результат: 161 (3, 9, 9 10, 11, 15, 13, 13, 14, 24, 23, 17).
Леонид, а как получилось пройти 2-й уровень за 9 шагов?

Цитата:
Вот решение за 24 шага (R - право, L - лево, * - зажечь, S - шаг, ^ - прыг, F - f1, G - f2).
MAIN: F L ^S L S R ^ F L F G
F : S S S * ^ L ^ ^
G : R ^ ^ S *
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
leonid
Автор

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Prudivus
а как получилось пройти 2-й уровень за 9 шагов?
MAIN: R F S S F *
F: S L S
G:
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
Prudivus

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
На 9-м уровне рекурсия получилась:
M:^L^F
F:GS*GRF
G:^*
Итого 12.
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
Prudivus

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
10-й:
M: FGGSR^FLF^RF
F: ^^SSS*G^
G: ^L
Итого 22.
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
После длительных размышлений: 155 = (3,9,9,10,11,17,13,10,12,21,23,17)

Для 10 уровня улучшил своё решение:
M: GL^LFLGF
F: SR^^G
G: SSS^*L^^
всего 21 команда

На 11 уровне так и не смог рекурсивную процедуру придумать. Возможно, она обходится шахматным конём.
Но где можно еще 33 шага сэкономить - даже не представляю...
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
leonid
Автор

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
5: без рекурсии (10)
M: FFF
F: GGLG
G: ^*S

5: с рекурсией (9)
M: F
F: GGLGF
G: ^*S

6: без рекурсии (15) (вроде бы можно за 14)
M: GF^FRFG
F: RG
G: S^S^S*

7: с рекурсией (9)
M: F
F: SGGF
G: *RSR

9 вроде бы можно за 9
10 вроде бы можно за 17

11: с рекурсией (17) (по памяти)
M: F
F: LGLLGLSF
G: *^^*^^*^

12 проходил без рекурсии за 16 но сейчас не вспомню.



Исправлено 1 раз(а). Последнее : leonid, 02.10.09 23:08
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
Цитата:
11: с рекурсией (17) (по памяти)
M: F
F: LGLLGLSF
G: *^^*^^*^

Красиво!
Ratings: 0 negative/0 positive
Re: Игра для развития программистского мышления
leonid
Автор

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
matod
Красиво!
Должен признаться, что один раз видел ролик, который проходит за 132. Только к уровню 7-8 понял, что там вовсю используется рекурсия (если бы не это, наверное до сих пор про рекурсию не знал). На 11 запомнился рисунок прохода. Сильно помогло в поиске решения. Для 7 тоже. А вот для 9 помню, что проходится вовсе не по "гребню", а с запрыгиванием внутрь "крепости", а повторить не могу.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 5 (Гостей: 5)

© 2000-2024 Fox Club 
Яндекс.Метрика