Вверх по лестнице, бегущей в бок
Суть игры: имеется цилиндр — игровое поле. Его высота — 4 яруса, длина по окружности — 9 клеточек. Вот его развёртка:

По каждому ярусу цилиндра слева направо бегут квадратные ячейки. Поскольку это цилиндр, то за координатой 9 следует 1. В начале игры на 1-м ярусе в квадратике сидит человечек. Задача играющего — вывести его на крышу цилиндра (или, что то же самое, на 5-й ярус). Для этого нужно его переправить сначала на 2-й ярус, затем на 3-й и 4-й. У каждой ячейки своя скорость. Управляя этими скоростями (каким образом, будет рассказано ниже), надо совместить координату квадратика 1-го яруса с координатой 2-го, тогда человечек поднимется на ярус выше. Но дальше задача усложняется: приходится следить, чтобы координата человечка не совпала с координатой ячейки на одном из предыдущих ярусов. Если такое происходит, человечек «проваливается» до самого нижнего яруса из тех, где случилось совпадение.
На каждом шаге на индикаторе высвечиваются одновременно скорости всех ячеек и их координаты, в #Y и #a располагается номер яруса, на котором находится человечек.
Теперь об управлении скоростями ячеек. Скорость квадратика — это целое число, показывающее, на сколько клеточек он переместится вправо, если её не менять, за один ход. Управление производится так: вы набираете номер квадратика (яруса), а ПМК перераспределяет соответствующую скорость, разлагая её на единички и прибавляя к скоростям квадратиков на следующих ярусах, причём после 4-го яруса снова идёт 1-й.
В результате такой операции каждый квадратик приобретает новую скорость и новую координату — путём прибавления его скорости к прежней координате. Такой способ задания скоростей очень удобен. Ввод исходных данных предельно прост: нажав всего одну кнопку, мы изменяем координаты сразу всех четырёх квадратиков. Сумма их скоростей, как легко видеть, в процессе игры остаётся постоянной, поэтому, выбирая скорости в начале игры, можно варьировать степень сложности стоя́щей перед нами задачи. Информация после каждого хода выводится на индикатор в виде восьмиразрядного числа, разделённого десятичной точкой: cлева от неё последовательно располагаются скорости квадратиков, справа — их координаты. А в #Y и #a, как уже упоминалось, выводится номер яруса, которого достиг человечек. Если вам удастся на 4-м ярусе совместить координату с девяткой, то человечек через обозначенный на рисунке люк выбирается на крышу, и в #Y и #a оказывается число 5.
Если в качестве номера квадратика указать 0, значения скоростей квадратиков останутся прежними, а координаты человечка соответственно пересчитаются.
Если указать номер квадратика с нулевой скоростью, хода не произойдёт: на экране появятся те же самые скорости и координаты квадратиков.
Если индикация случайно стёрлась, её легко можно восстановить, нажав .
Каждая партия начинается с занесения:
(все начальные скорости и координаты квадратиков равны 2).
a — человечек находится на 1-м ярусе.
| № | Нажимаемые клавиши | #X | #Y, #a | Объяснение |
|---|---|---|---|---|
| 0 | 2222.2222 | 1 | Начальные скорости (до точки) и координаты квадратиков (после точки) равны 2; человечек находится на 1-м ярусе. | |
| 1 | 2033.4255 | 1 | Перераспределили скорость 2-го квадратика: теперь она равна 0, а скорости 3-го и 4-го увеличились на 1. | |
| 2 | 143.4398 | 1 | Перераспределили скорость 1-го квадратика: теперь она равна 0 (начальные нули в числе не показываются). | |
| 3 | 1214.5513 | 2 | Перераспределили скорость 3-го квадратика. Координаты 1-го и 2-го квадратиков совпали, и человечек поднялся на 2-й ярус. |
Существенно оптимизирован по сравнению с оригинальным:
00. П→Xa 01. П→X8 02. 8 03. X→П0 04. CX 05. ВП 06. 1 07. ÷ 08. КП→X0 09. + 10. П→X0 11. FL0 12. 03 13. ВП 14. 3 15. × 16. С/П 17. Fx≠0 18. 45 19. X→П9 20. КП→X9 21. Кx≠00 22. X→П0 23. CX 24. КX→П9 25. 4 26. П→X9 27. − 28. Fx≠0 29. 31 30. FВx 31. 1 32. + 33. X→П9 34. 9 35. КП→X9 36. 1 37. + 38. КX→П9 39. − 40. Fx<0 41. 43 42. С/П 43. FL0 44. 25 45. 5 46. X→П0 47. 3 48. + 49. X→П9 50. 9 51. В↑ 52. КП→X0 53. /−/ 54. КП→X9 55. − 56. + 57. Fx≥0 58. 56 59. − 60. КX→П9 61. П→X0 62. FL0 63. 46 64. П→Xa 65. 5 66. + 67. X→П0 68. КП→X0 69. В↑ 70. П→Xa 71. 1 72. + 73. X→П0 74. F⟳ 75. КП→X9 76. − 77. Fx=0 78. 90 79. + 80. П→Xa 81. П→X9 82. 4 83. − 84. − 85. Fx≠0 86. 90 87. FВx 88. X→Пa 89. В/О 90. F⟳ 91. П→X9 92. 1 93. + 94. X→П9 95. FLO 96. 74 97. КБП0
Пояснения:
00…16 — формирование и вывод скоростей и координат квадратиков в #X и номера яруса в #Y.
17…18 — если введён 0, пропускается последующий блок пересчёта скоростей, и управление переходит сразу к блоку пересчёта координат.
19…44 — блок пересчёта скоростей; проверка на 40…41 делает дополнительный останов (42) с выводом отрицательного числа, если скорость очередного квадратика превышает 9.
45…63 — блок пересчёта координат.
64…96 — проверка, не совпали ли координаты квадратика с человечком с координатами другого квадратика: последовательно проверяются ярусы с 1-го по следующий за текущим, причём текущий обходится дополнительной проверкой (80…86). Если совпали, то номер совпавшего яруса становится текущим — записывается в #a (87…88), и управление переходит на шаг 01 (89. В/О).
Если же совпадений не обнаружено, то после прохода всех проверяемых ярусов управление переходит на шаг 00 (97. КПБ0: в #0 после отработки цикла (95…96) остаётся 1, при косвенном обращении модифицирующаяся в 0).
Источник: журнал «Техника — молодёжи», № 7 / 1988, стр. 15.
Автор: А. В. Раков (Горький, нынешний Нижний Новгород).
Переработал, перевёл в формат эмулятора и составил эту инструкцию: Адам Лаврик — 2026-06-06,13.