…Многие шахматисты, в том числе гроссмейстеры, ошибочно полагали, что задание [поставить ферзём мат] невыполнимо. Математики А. Брудно и И. Ландау обратились за помощью к ЭВМ. Сто́ит отметить, что при решении этой задачи впервые был использован метод ранжирования. Разбив множество всех возможных позиций по рангам, машина установила, что мат даётся не позднее 23-го хода при любом начальном положении белого ферзя и чёрного короля, но только при неприкосновенном короле на поле c3 (ввиду симметрии годятся также поля c6, f6 и f3). Пожалуй, это был первый случай, когда ЭВМ решила шахматную задачу раньше человека. Справедливости ради надо отметить, что если квалифицированному шахматисту сообщают, что мат есть, то он его находит…
— А. Карпов, Е. Гик — «Шахматный калейдоскоп» (библиотека «Квант», выпуск 13).
Шахматный эндшпиль: Человек, играя белым ферзём (при неприкосновенном белом короле), ставит мат чёрному королю под управлением ПМК.
Примечание: в файле .pmk для эмулятора регистры #4 и #5 уже заполнены. В обычных ПМК они заполняются вручную: .
Положение переключателя Р–ГРД–Г произвольное.
Каждая партия начинается со следующих действий:
Установка белого ферзя на выбранное поле, а также каждый его ход осуществляется так: координаты поля . ПМК отвечает координатами поля, на которое пошёл чёрный король. В обоих случаях первая цифра означает вертикаль, вторая — горизонталь
Правильность ввода человека не проверяется, поэтому он должен следить за ней сам: перемещать ферзя по правилам и не ставить его на поле под боем. Следует помнить, что поскольку белый король всё время стои́т на c3 = 33, на это поле ферзя ставить нельзя.
Следующие сообщения являются признаком завершения партии:
Белые:
Кр c3 = 33 — координаты не задаются явно, но подразумевается, что всю партию он проведёт, стоя на месте;
Ф g7 = 77 (будут указаны на 1-м ходу).
Чёрные:
Кр a8 = 18 — c d.
| № | Нажимаемые клавиши | Ход ПМК | Объяснение |
|---|---|---|---|
| 1 | 28 | Ф g7 — Кр b8 | |
| 2 | 18 | Ф d7 — Кр a8 | |
| 3 | Г | Ф с7 — пат |
Доработанный вариант, подходящий как для Б3-34/МК-54/МК-56/МС-1104, так и для МК-61/МК-52:
00. В↑ 01. X→Пa 02. ВП 03. X→Пb 04. − 05. 1 06. 0 07. ÷ 08. X→Пa 09. 3 10. X→П2 11. X→П1 12. П→Xd 13. П→X2 14. + 15. 2 16. − 17. X→П9 18. П→Xc 19. П→X1 20. + 21. 2 22. − 23. X→П8 24. 3 25. − 26. Fx² 27. П→X9 28. 3 29. − 30. Fx² 31. + 32. 3 33. − 34. Fx≥0 35. 77 36. П→Xa 37. П→X8 38. − 39. В↑ 40. Fx² 41. П→Xb 42. П→X9 43. − 44. Fx² 45. FВx 46. F⟳ 47. − 48. × 49. × 50. П→X8 51. В↑ 52. 9 53. − 54. FВx 55. П→X9 56. − 57. × 58. × 59. П→X8 60. × 61. П→X9 62. × 63. Fx≠0 64. 77 65. П→X8 66. П→Xc 67. − 68. Fx=0 69. 84 70. П→X9 71. П→Xd 72. − 73. Fx=0 74. 84 75. П→X4 76. X→П7 77. FL1 78. 18 79. 3 80. FL2 81. 11 82. П→X7 83. С/П 84. П→X5 85. X→П7 86. П→X9 87. X→Пd 88. П→X8 89. X→Пс 90. 1 91. 0 92. × 93. + 94. С/П 95. FL0 96. 00 97. К−
Пояснения:
00…08 — приём хода человека, разбивка по координатам с помощью сочетания 01. X→Пa 02. ВП, отбрасывающего первую цифру числа́, и запись их в #a и #b.
09…11 — инициализация вложенных циклов (заканчиваются на 77…81) по содержимому #1 и #2. Их параметры меняются от 3 до 1; при вычитании из них двойки последовательно получаются значения 1, 0, −1, которые приплюсовываются к координатам чёрного короля, формируя координаты клетки для возможного следующего хода (12…23), которые заносятся в #8 и #9. Чёрный король по возможности стремится в угол h8 = 88 — противоположный углу a1 = 11, в котором ему ставят мат.
24…35 — проверка, не лежит ли рассматриваемая клетка в зоне белого короля. Если лежит, управление передаётся на следующую итерацию циклов проверки (77), если нет, программа идёт дальше.
Далее следует проверка, не находится ли рассматриваемая клетка под боем ферзя (36…49; если лежит на одной вертикали/горизонтали с ферзём, разность соответствующих координат будет равна 0, если на одной диагонали — разность квадратов разностей будет равна 0) или за пределами доски (50…62); если условие (63…64) не выполняется, управление передаётся на следующую итерацию цикла (77), если нет, программа идёт дальше. Надо сказать, что ПМК не «замечает» экранирования ферзя королём: например, если поставить ферзя на a1 = 11 или b2 = 22, калькулятор будет считать, что вся диагональ a1…h8 = 11…88 находится под боем, и соответственно будет её избегать. Но это в целом не мешает игре.
65…74 — проверка, не остаются ли координаты короля неизменными (когда в #1 и #2 находится 2). Если остаются, управление передаётся на следующую итерацию цикла (77), если нет, программа идёт дальше на адрес 84.
75…76: в #7 вносится сообщение о возможном пате, после чего управление передаётся на следующую итерацию цикла. Если все итерации по L1 и L2 отработали, из #7 вызывается текущее сообщение о конце партии (мат или пат), и происходит останов (82…83).
Если клетка прошла все проверки успешно, в #7 вносится сообщение о возможном мате (84…85), координаты клетки из #8 и #9 записываются в #c и #d (86…89), из них формируются двузначные координаты и происходит останов и индикация хода ПМК (90…94).
Цикл по числу оставшихся ходов (95…96) передаёт управление на начало программы; если ходы исчерпаны, управление передаётся на команду 97. К−, вызывающую аварийный останов и индикацию ЕГГОГ .
Примечание автора инструкции: я сохранил оригинальный алгоритм, однако полностью переписал и перекомпоновал программу. В результате удалось сэкономить достаточно много шагов, которые были использованы для улучшения сервисности: теперь программа выводит координаты короля и принимает координаты ферзя как двузначные чи́сла, а не по отдельности, как раньше. Также индикация конца партии изменена на более явственную (буквы и ЕГГОГ вместо цифр).
Источник: журнал «Техника — молодёжи», № 11 / 1987, стр. 52.
Автор: Владимир Рябов (Казань).
Существенно доработал, перевёл в формат эмулятора и составил эту инструкцию: Адам Лаврик — 2026-05-02.