Техника - молодёжи 1987-09, страница 58ном положении белого ферзя и черного короля, но только при неприкосновенном короле на поле сЗ (ввиду симметрии годятся также поля сб, f6 и f3). Пожалуй, это был первый случай, когда ЭВМ решила шахматную задачу раньше человека. Справедливости ради надо отметить, что если квалифицированному шахматисту сообщают, что мат есть, то он его находит»,— пишут А. Карпов и Е. Гик в книге «Шахматный калейдоскоп» (Библиотека «Квант», вып. 13). Ну, компьютер есть компьютер. А что может ПМК? Хотя программа С. Вагина с самого начала предназначалась-для Б3-34 и содержала немало остроумных алгоритмических решений, отдельные недостатки имели место. Короля в начале игры нельзя было ставить на поля 16 и 61; не разрешалось ходить на поле 55; в позиции Кр15 Ф38 (или Кр51 Ф83) ферзь ходил не по правилам; мат ставился только ходом Ф22 (в позиции КрП, 21 или 12). Кроме того, не очень удобным был переход к новому варианту, а какая-либо сигнализация о мате отсутствовала. Короче говоря, администрации КЭИ пришлось помучиться и с этой программой. В результате появился такой вариант: 00.ИП2 01.БП 02.86 ОЗ.В/О 04.П4 05.ХУ 06.П2 07.КППА 08.ВП 09.1 10.+ 11. С/П 12.П5 13,— 14.Кх=^ОД 15. Кх>ОС 16.2 17.3 18.ПА 19.2 20. ИП5 21.FBx 22.КППА 23.П6 24.ХУ 25.П5 26.ПЗ 27.В/0 28.БП 29.97 30,— 31.Кх<ОЕ 32.ИП1 33.Fx^0 34.45 35.ИПВ 36.5 37.КППВ 38.^ 39.2 40.FL3 41.48 42.ВП 43.ИП4 44.КППВ 45.КИП5 46.FL1 47.49 48.КИП2 49.F10* 50.П1 51.+ 52.Кх>08 53.ИП1 54.X 55.Fx^0 56.38 57.9 58.ПЗ 59.КИПЗ 60.5 61.ИПЗ 62.ИП6 63,- 64.Fx 2 65.— 66.Кх>08 67.FV 68.ИП5 69.+ 70.f 71.ИП2 72,— 73.ИП4 74.ИПЗ 75,— 76.Кх=^09 77.Fx 2 78.ХУ 79.Кх^09 80.Fx 2 81.— 82.Кх=08 83,- 84.Кх#08 85.. 86.КППВ 87.- 88.FL3 89.46 90.4 91.— 92.Fx=0 93.29 94.ИП4 95.Fsin 96.Кх<ОЕ 97.2 На адресе 67 расположился квадратный корень (код 21), на адресе 70— стрелка вверх (ОЕ), на адресе 85 — десятичная точка (0—). Букве Е в командах по адресам 31 и 96 (код СЕ) соответствует на клавиатуре стрелка вверх. Владельцы МК-61 и 52 должны замкнуть программу командой БП 00. Перед началом работы нужно установить переключатель Р-Г в положение Р и вписать в регистры адреса переходов: 3 (или 23, а также 24, 25, 26, 27) ПА 4 ПВ 17 ПС 19 ПД 51 П7 59 П8 83 П9. В регистр 0 вводится ЗГГОГ, совмещающий функции условного сигнала и инструмента для перехода на адреса 28 и 57: 1 ВП 70 Fx Fx2 57 X ПО. Обладатели МК-61 и 52 должны записать это числовое чудовище и в регистр Е либо разделить обязанности регистров: 57 ПЕ 1 ВП 70 Fx 2 Fx 2 ПО. Игра, а также переход к новому варианту, начинается командой Сх П1 7 П2 В/О С/П. ПМК в ответ устанавли вает ферзя на поле g7 (77). Установка черного короля на выбранное поле, а также каждый его ход, осуществляется как и в «Ладейном эндшпиле»: (горизонтальная координата) ПП (вертикальная координата) С/П. ПМК довольно быстро отвечает двузначным числом, первая цифра которого — горизонтальная координата, вторая — вертикальная. Если вы в процессе игры ошибетесь и перепутаете координаты, ПМК воспримет это с присущим всем ЭВМ чувством юмора и в своем ответе тоже поменяет их местами. Индикация ЗГГОГа означает, что черный король занимает позицию 11,12 или 21 (это может произойти только в начале игры) и ПМК объявляет мат в два хода. При появлении ЗГГОГа надо нажать С/П. Обычно ферзь матует черного короля на полях 13 или 31, предварительно на индикаторе выскакивает ЕГГОГ. Ответ на это сообщение — тоже С/П. ЕГГОГ появляется и в ситуации Кр14 (или 41) на первом ходу: ПМК сообщает, что намерен дать шах на первую вертикаль. Программа «Неприкосновенный король» состоит из следующих основных частей: блоки дебюта (00-02, 86), тактической игры на первой вертикали или горизонтали (87-97, 00-02, 28-56), стратегической игры на остальных полях (46-50, 57-89), а также подпрограмма ввода-вывода КППВ (03-27), с которой целесообразно и начать наш очередной маршрут. На ее вход поступают координаты ферзя, она записывает их в регистры 4 и 2 (адреса 04-06), затем вызывает вспомогательную (но очень важную) подпрограмму КППА (07). Та существует в двух «ипостасях», в зависимости от числа в регистре А: если там 3, то является «пустой» ОЗ.В/О, если же 23, то вызывается концовка КППВ (2327), «переворачивающая» координаты (попутно происходит их запись в регистры 6, 5 и 3, но это ровным счетом ничего не меняет). Затем координаты ферзя подготавливаются к индикации, и происходит останов (08-11). После ввода с пульта координат короля они вычитаются одна из другой (12-13; вертикальная смещается в ре гистр Xi и результат сравнивается с нулем (14-15). Если король находится на диагонали 11-88, число в регистре А, определяющее вид КППА, не меняется (это важно при переходе через поле 55). Если король ниже диагонали, туда записывается 23, если выше, то 3 (16-18). Следующая команда запасает в стеке двойку для возможного использования в тактическом блоке. Координаты короля вновь вызываются в стек, подпрограмма КППА оставляет их в прежней позиции либо «переворачивает», затем они запоминаются (20-26). В результате всех этих манипуляций меньшая по величине координата оказывается в регистрах 5 и 3, большая — в регистре 6, и ПМК строит игру в предположении, что король находится выше диагонали, а при выводе координат ферзя располагает их нужным образом. При дальнейшем анализе мы тоже будем придерживаться этой точки зрения и считать, что горизонтальная координата короля хранится в регистре 5 (и 3), вертикальная — в регистре 6, а ферзя — соответственно в регистрах 2 и 4. Блок дебюта (00-02) после Сх П1 7 П2 В/О С/П подает на вход КППВ (86) две семерки; на этом его функции исчерпываются. Ферзь независимо от вида КППА оказывается на поле 77. После ответа черных и возвращения из подпрограммы ввода-вывода из вертикальной координаты короля вычитается горизонтальная (87; эта разность нужна и в стратегическом, и в тактическом блоках). Затем производится проверка: не стоит ли король на первой вертикали (88-89). Если нет, то управление передается в стратегический блок. Подблок коррекции (46-50) нужен для правильного прохождения через поле 55: он записывает в регистр 1 какое-либо число от 10 до 106, уничтожая тем самым условие первого хода П1=0. Если король располагается на поле 55, в регистр 1 записывается единичка (на входе подблока в этом случае имеем ноль). А вот если при входе в подблок содержимое регистра 1 равно единице (это бывает, только когда король ход назад стоял на 55), команда 48.КИП2 корректирует позицию ферзя — в противном случае подпрограмма ввода-вывода запутается с «переворачиванием» координат и ферзь в некоторых вариантах сделает «ход конем». По выходе из подблока коррекции программа «вхолостую» проскакивает через один из участков тактического блока (51-56), и управление передается на начало основной части стратегического блока (57-86). Этот фрагмент программы перебирает поля справа от черного короля на расстоянии «хода конем», причем перебор возможных полей производится сверху вниз. Подблок проверок (70-84) пропускает ферзя на первое же такое поле, на которое он способен ступить. Нестандартная команда «точка» (85) замещает содержимое регистра X результатом операции 74.ИПЗ, а в регистре У к этому моменту оказывается результат сложения по адресу 69. 55 |