Apr. 2nd, 2016

nsg21: (Default)
Вдогонку к посту про псевдографический рекурсивный лабиринт.

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


Началось переписывание с того что я нашёл другой лабиринт этого же типа, но поменьше (http://skepticsplay.blogspot.com/2010/10/fractal-maze.html
). После нескольких итераций я ужал его до 9x14 знакомест, а это уже такой размерчик что можно попытаться уместить в строку. Плюс строка на логику, строка на инициализацию, как раз могло и получиться. Так и вышло.

Вот он, кстати, красавец:

Цифры внизу -- это отображается стек погружения. Две подкомнаты, 7 входов в каждой. Я без бумажки даже с программкой-плеером не решил. (Правда с бумажкой решил, так что ответ точно есть)

Неожиданно для меня в 4 строки вписалось довольно легко, но дальше процесс застрял. Все грязные трюки какие мог, я применил, но ни в какую.

Писал я его сидя на трибунах на турнире по FIRST Robotics (это очень неудобно, очень шумно и в моём случае ещё и довольно жарко), поэтому как именно оно ужалось я упустил, но это было не красиво и не легко. Вот, например, последний оператор первой строки V=VPEEK(U)-9. Девятка вычитается чтобы можно было в следующей строке при сравнении V с границами можно было использовать меньшие числа. Мне бы было гораздо удобнее (и сэкономилось бы больше места в следущей строке) если бы я мог вычесть 17, но нет: 17 это два знака, а место есть только для одного. А в следующей строчке мне место тоже не просто так понадобилось. Последнее слово там NEXT, не хватало трёх символов, помещалось только N, что не может служить полноценной заменой NEXT. И это уже финальные штрихи, до этого ещё дойти как-то надо было.

В принципе ещё есть резерв: можно перевернуть лабиринт вверх ногами, тогда начальная позиция будет ближе к началу экрана и инициализация "X=284" превратится в "X=45", но я рад что до этого не дошло: при этом лабиринт бы поменялся и большое количество числовых параметров, которые в коде просто в явном виде, пришлось бы пересчитывать.

Profile

nsg21: (Default)
nsg21

April 2024

S M T W T F S
 123456
7 8910111213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 23rd, 2025 02:31 pm
Powered by Dreamwidth Studios