Техника - молодёжи 1987-11, страница 55сделать так, чтобы коню некуда было пойти (он передвигается, как соответствующая шахматная фигура). Количество охотников произвольно и задается в начале игры. Чем меньше охотников, тем труднее поймать коня. Вот программа «Мустанг»: Ш 00.1 01.0 02.ПД 05. ИЛА 04. ИП0 05.3 06.x 07.+ О&КППВ 09.КППС 10.2 11.0 12. ПД 13. ИПА 14.И00 15.2 16. * 17.+ 18. КППЬ 19.КППС 20.} 21.5 22.ПД 23. ИПА 24. ИПО 25./-/ 26. ПО 27.5 25.x 29.+ 30. П9 31.1 32- 33.КППВ 34.КППС 35. Сх 36. ПД 37. ИП9 38.1 39.+ 40.КППВ 41.КШ1С 42.Сх 43. ПД 44.Кх*°Д 45. i 46. ПЕ 47. ВП 4в.К*.оД 49.Кх»оД 50.- 51.Fbx 52.8 53.- 54.К*<оД 55.® 56. Fcos 57. КхмД 58.Кх>оД 59. ИПЕ 60.1 61.0 62.+ 63.+ 64. ПД 65. ВП 66.1 67. t 68. Н 69. F10* 70. 8 71 + 72.КИ1ВД 73. К© 74. Vo 75.КИПД 76,- 77.Fx<o 78.80 79. Vo 80. ИПЕ 81. ПА 82. с/п 83. П9 84. ПЕ 85.86. ПД 87.9 88-+ 89. К{} 90. Fx" 91.99 92. ИПД 93.1 94.1 После ее ввода нужно установить переключатель Р—Г в положение Г и ввести исходные данные: 44 ПВ 75 ПС 4 ПО. В регистрах 1—8 хранится изображение игрового поля с охотниками: регистр 1 — это первая горизонталь, регистр 2 — вторая и так далее. Единички в дробной части изображают охотников, нолики — незанятые клетки, а восьмерка слева никакой роли не играет, это просто признак выполнения логической операции. Если, скажем, в начале игры охотников девять, причем они занимают все поля на первой горизонтали и крайние поля на второй, ситуация изображается так: 8,1111111 П1 8,1000001 П2 8 ПЗ П4 П5 П6 П7 П8. В регистр А вводится двузначная координата мустанга, допустим, 54 ПА. Первая цифра — номер клетки по вертикали, вторая — по горизонтали. В начале игры нужно отдать дополнительную команду БП 83. Ход задается так: (координата охотника, который ходит) ПП, (координата поля, куда он ходит) С/П. Допустим, 12 "ПП 34 С/П. В ответ ПМК выдает на индикатор двузначную координату мустанга. Проконтролировать положение охотников можно, просмотрев регистры 1—8. Если мустанг пойман, ПМК зацикливается. Охотники могут ходить только по диагонали, в противном случае на экранчик выводится дробное число и надо повторить ввод. Привожу пример игры с заданным выше комплектом исходных данных (запись 11/55=66 означает, что охотник, стоявший на поле 11, сходил на 55, а ПМК ответил 66): 11 /55=66; 21 /43=74; 17/53=86; 95.+- 96. к{} 97. Fx-o 98.82 99. ИПЕ АО.КППВ А1.КПД А2.ИП9 АЗ.КППЬ А4.КПД 15/33=65 45/56=84 14/32=72 64/55=51 53/64=72 55/66=84 мустанг пойман ся. 33/44=57; 27/45=76; 13/31=63; 31/42=51; 55/64=84; 56/65=63; 12/45=72; 45/63=84; 44/53=84; 42/51=72; 66/75=72; 75/84= ПМК зациклил- НОВОСТИ ЕГГОГОЛОГИИ «Здравствуй, дорогая редакция,— пишет нам учащийся СПТУ-114 из Гомеля С. Володько.— Вот опять у меня собралось несколько открытий, и я спешу сообщить вам о них. 1. Вы составили уже несколько программ, где использован нестандартный оператор «точка». Он вызывает в регистр X число из особого регистра памяти — назовем его Хг. Чтобы записать туда число, можно воспользоваться командами FBx, «стрелка вверх» и так далее. Но во всех случаях при записи числа в регистр Хг содержимое стека меняется. А как быть, если это нежелательно? Вот здесь-то и пригодятся команды, коды которых начинаются на «пусто» и о которых вы неоднократно писали. Кстати, в шестнадцатиричной системе счисления после Е идет буква F, которая на наших ПМК обозначается как «пусто». И поэтому, раз все остальные символы имеют буквенные обозначения, то почему бы не называть символ «пусто» буквой F? Так вот, все команды, коды которых начинаются с «пусто», заносят число в регистр Хг, не меняя содержимого стека. Воспользуемся, к примеру, программой: 39.Fx2 40. FABT В/О КППА FnPT 41.Fx2 42.ПО 43.. 44.С/П. По адресу 40 дана последовательность команд для получения кода FA («пусто — минус»). Скомандуем теперь FABT 3 БП 39 С/П. На ejwwijwmbioc mji индикаторе 9 (три в квадрате), а в регистре 0—81 (три в четвертой степени). Если бы в верхних регистрах стека находились какие-нибудь числа, с ними бы ничего не случилось. 2. Теперь расскажу об удивительном свойстве команды В/О. Вот программа: 00.1 01.ВП 02.5 03.0 04.Fx2 05.В/О. Перейдем в режим ABT и скомандуем В/О С/П. На индикаторе ЕГГОГ. Команды С/П не было, а вычисления остановились, следовательно, команда В/О служит остановом, если в регистре X находится «сверхчисло». А куда передалось управление? РПРГ. Оказывается, на адрес 01, так как стек возврата из подпрограмм был очищен. Вернемся в режим АВТ и наберем 1 ВП 50 Fx2 Fx2 1234Х-Мы записали в стек возврата число 301234. В/О С/П FnPF. На сей раз управление передалось на адрес 31. Продолжим: FABT В/О С/П РПРГ. Теперь мы попали на адрес 13. Отсюда вывод: если в регистре X находится «сверхчисло», то команда В/О передает управление на адрес, записанный в стеке возврата, после чего программа останавливается. 3. В инструкции к ПМК написано, что аргумент тригонометрических функций не может быть больше Ю10. Установим переключатель Р—Г в положение Г, наберем 1 ВП 10 и возьмем от этого числа синус. На индикаторе ЕГГОГ, все правильно. Теперь наберем 1 ВП 50 Fx2 и возьмем синус от «сверхчисла». ПМК выдает ответ /-9,8480774- 10~'/. Правилен ли он? Возьмем синус от 1 ВП 5, 1 ВП 6, 1 ВП 9. Во всех случаях горит этот же результат. Следовательно, ответ правильный. Верный результат будет получаться для чисел вплоть до 9,9999999- Ю100. А дальше начнется то, что немного напоминает «числовой океан», о котором вы писали. Одна голова — хорошо, а больше — лучше. Я предлагаю всем вместе разобраться в моем открытии, причем не только для синуса, но и для косинуса, и для тангенса». Ну что ж, проблема поднята интересная. Действительно, каким образом вычисляет ПМК тригонометрические функции «сверхчисел»? В каких случаях машинка выдает правильный результат и от чего это зависит? Ждем ваших соображений. |