29.07.2009 |
Головоломка Эйнштейна |
Любопытная головоломка
Где-то в ноябре 2007 мне случайно попалась эта игрушка (Einstein 2.0). Она, действительно, оказалась очень прилипчивой. Вряд ли можно серьезно относиться к "утверждению Эйнштейна" - конечно, простейшие логические умозаключения при решении приходится делать, но ... набор таких умозаключений не так уж и велик. Игра требует внимательности, особенно ее компьютерная реализация, где неосторожное нажатие на кнопку мыши сразу ведет к проигрышу. Поиграв в Einstein 2.0, быстро обнаруживаешь, что не все исходные позиции равноценны - некоторые очень просты, а некоторые заставляют надолго задуматься. В своей реализации игры я предлагаю один из вариантов решения этой проблемы. Дополнительно введена возможность использования своих собственных позиций. Для этого набор правил задается в виде текстового файла для не перемешанной позиции: A0 A1 A2 A3 A4 A5 B0 B1 B2 B3 B4 B5 C0 C1 C2 C3 C4 C5 D0 D1 D2 D3 D4 D5 E0 E1 E2 E3 E4 E5 F0 F1 F2 F3 F4 F5Формат правил прозрачен - достаточно посмотреть файлы с расширением .EIN После перемешивания получаем большой набор, в общем, равноценных позиций. Дополнительно перемешиваются и правила. В конце текстового файла после слова ein записаны зашифрованные данные по лучшим 10 результатам игры. Достаточно оставить только часть до слова ein, чтобы обнулить таблицу результатов. В версии 1.0 оставлены лазейки для "обмана", но это "фича", а не "баг". В подсказке к игре нет информации об еще одной возможности использования программы. Нажатие на CTRL+V приводит к удалению лишних правил (кроме открытых ячеек), если таковые имеются - эту возможность можно использовать при "ручном" создании набора правил. Но при этом нужно помнить, что количество "горизонтальных" правил не должно превышать 24, а количество "вертикальных" - 19. Сделаю еще одно замечание. Программа написана без использования исходных текстов программы Einstein 2.0, хотя эти тексты у меня имеются. Из ресурсов программы Einstein 2.0 я воспользовался только звуком бьющегося стекла. Я не знаю алгоритма получения правил игры Einstein 2.0, хотя, если я не ошибаюсь, в этой программе использована случайная генерация правил с последующим удалением лишних. В моей программе также идет случайная генерация правил, но вряд ли она совпадает с генерацией Einstein 2.0. Достаточно прозрачная структура файлов *.SAV позволила читать правила из этих файлов, что и включено в мою игру. В целом, хочу выразить свою благодарность создателю игры Einstein 2.0. ВНИМАНИЕ, версия 1.01В версии 1.0 была обнаружена досадная ошибка, которая иногда приводила к неправильному чтению данных из файла *.ein. На чтении позиции эта ошибка не сказывалась, нарушалась таблица Top10 с лучшими результатам. В версии 1.01 эта ошибка исправлена (надеюсь :-)).К сожалению, тестирования программы практически не было, поэтому все замечания по ошибкам, по улучшению интерфейса я жду от игроков этой игры. Возможно это не очень правильно, но ... |