Игра Ним с тремя множествами предметов


Главная / ЭКВМ / Программы для ЭКВМ / БРП-4

Древняя игра Ним с тремя множествами предметов (камней, монет и т.д.) широко распространена на Востоке. В этой игре партнеры поочередно берут из выбранной (любой) кучи произвольное число предметов. Тот, кто берет последний предмет, выигрывает.

Программа реализует игру, в которой одним партнером являетесь Вы - игрок (И), а вторым - калькулятор (К).

Исходные данные a1, a2, a3 (число предметов в каждом множестве, причем a1, a2, a3 < 100) заносятся в ячейки памяти: a1 → П7, a2 → П8, a3 → П9.

Результаты вычислений (оставшееся число предметов в каждом множестве) заносятся в те же ячейки и отображаются на дисплее в виде семизначного числа 1a1a2a3. Первая цифра этого числа - незначащая единица, идущие за ней две цифры - число предметов в первом множестве (а1), следующие две цифры - число предметов во втором множестве (а2), две последние цифры - число предметов в третьем множестве (а3).

Инструкция по пользованию программой для МК-52 с БРП-4

  • 1. Наберите адрес 1050498 и введите программу, нажав клавиши А↑, ↑↓.
  • 2. Введите исходные данные.
  • 3. Включите счет, нажав клавиши В/0, С/П. Время вычисления около 5 с.
  • 4. Нажмите клавишу С/П - ход калькулятора. Время вычисления около 150 с. После окончания счета дисплей отобразит число предметов, оставшихся в множествах. Знак "-" слева от числа означает, что следующий ход игрока.
  • 5. Введите число оставшихся в каждом множестве предметов в соответствующую ячейку памяти (П7,П8,П9) и включите счет, нажав клавишу С/П. Время вычисления около 5 с.
  • 6. Отображение на дисплее числа 1000000 означает конец игры.
  • 7. Для повторного запуска программы повторите пп. 2-7.

Инструкция по пользованию программой для ЭКВМ

  • 1. Загрузите программу с нулевого адреса.
  • 2. Введите исходные данные.
  • 3. Включите счет, нажав клавиши В/0, С/П.
  • 4. Нажмите клавишу С/П - ход калькулятора. После окончания счета дисплей отобразит число предметов, оставшихся в множествах. Знак "-" слева от числа означает, что следующий ход игрока.
  • 5. Введите число оставшихся в каждом множестве предметов в соответствующую ячейку памяти (П7,П8,П9) и включите счет, нажав клавишу С/П.
  • 6. Отображение на дисплее числа 1000000 означает конец игры.
  • 7. Для повторного запуска программы повторите пп. 2-7.

Тестовый пример

a1 = 29, a2 = 30, a3 = 23.

1) К : 9, 30, 23.

2) И : 9, 26, 23; К : 9, 26, 19.

3) И : 9, 18, 19; К : 1, 18, 19.

4) И : 1, 18, 8; К : 1, 9, 8.

5) И : 1, 0, 8; К : 1, 0, 1.

6) И : 0, 0, 1; К : 0, 0, 0.

Калькулятор выиграл.


Программа "Игра Ним"

Программа 34 из блока расширения памяти БРП-4, переключатель "1/2" блока в положении "2", адрес 1050498.

Файл brp4-34.mkp (КС 6468/30)

  0 1 2 3 4 5 6 7 8 9
00 Cx 1 ПП 78 ИП 7 П 4 ИП 8 П 5 ИП 9 П 6
10 6 4 П B 0 П A 7 П 0 3 П 1 0
20 П E ИП B /-/ П C 7 П 2 ИП 2 П 3 K ИП 2 ИП B
30 - F x≥0 50 K П 3 1 ИП E - П E ИП A F x=0
40 43 ИП 1 П D ИП 1 ИП D - F x=0 50 ИП B П C
50 F L1 26 ИП A ИП C ИП E × - П A ИП B 2
60 ÷ П B F L0 17 ИП D 6 + П D ИП A F x=0
70 73 1 /-/ K ИП D + K П D 1 /-/ ИП 7 4
80 F 10x × ИП 8 2 F 10x × + ИП 9 + 6
90 F 10x + × С/П В/О 0 0 0    

Исходный текст для кросс-компилятора

Файл brp4-34.mkl

.CHARSET 1251

; БРП-4
; 34. Игра Ним с тремя множествами предметов (2 - 1050498)

.ORG 0
	CX
	1
	GSB A78
	RM 7
	M 4
	RM 8
	M 5
	RM 9
	M 6
	64
	M B
	0
	M A
	7
	M 0

A17:	 ; с адреса 62
	3
	M 1
	0
	M E
	RM B
	+/-
	M C
	7
	M 2

A26:	 ; с адреса 50
	RM 2
	M 3
	K RM 2
	RM B
	-
	F X>=0 A50
	K M 3
	1
	RM E
	-
	M E
	RM A
	F X=0 A43
	RM 1
	M D

A43:	 ; с адреса 39
	RM 1
	RM D
	-
	F X=0 A50
	RM B
	M C

A50:	 ; с адреса 31, 46
	F L1 A26
	RM A
	RM C
	RM E
	*
	-
	M A
	RM B
	2
	/
	M B
	F L0 A17
	RM D
	6 +
	M D
	RM A
	F X=0 A73
	1 +/-

A73:	 ; с адреса 69
	K RM D
	+
	K M D
	1 +/-

A78:	 ; с адреса 2
	RM 7
	4 F 10^X *
	RM 8
	2 F 10^X *
	+
	RM 9
	+
	6 F 10^X +
	*
	R/S
	RTN
	000
.END 

Примечание. Считывание программ из БРП в МК-52 производилось блоками по 7 байт. Неиспользуемые команды в конце программы оставлены для совместимости и используются при подсчёте контрольной суммы.


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)