Посадка на Луну с HP-12C и краткий обзор

Оригинальная программа для HP-25 была написана и опубликована в журнале «HP-25 Applications Programs» в 1975 году. После выпуска в 1981 году популярнейшей по сей день модели финансового ПМК HP-12C игру быстро адаптировали и для него. Несовместимость заключалась в том, что HP-12C не имеет операций сравнения типа x<0 и x<y, вместо которых используется x<=y и x<>y.

Сценарий игры прост. Наш лунолет находится в точке на заданной высоте, он вертикально снижается с начальной скоростью, имея запас топлива. Расход топлива в 5 кг позволяет компенсировать тяготение. Соответственно, чтобы затормозить, нужно расходовать больше. Необходимо приземлиться с приемлемой скоростью, например -5 м/сек.

Вводим текст программы.

Шаг	Код команды	Команда			Комменарий
01	42 4		f 4		4 digit display
02	45 0		RCL 0		
03	26		EEX		
04	4		4		
05	10		/		Divide X by 10000
06	45 1		RCL 1		
07	0		0		
08	43 34		g x<=y		If 0<=V?
09	43,33 14	g GTO 14	-->	V positive or zero
10	33		R dn		V negative
11	34		x<>y		Add V and -X
12	30		-		
13	43,33 16	g GTO 16	-->	
14	33		R dn		Add V and X
15	40		+		
16	31		R/S		Display V.X and get burn
17	45 2		RCL 2		Fuel
18	34		x<>y		
19	43 34		g x<=y		If Burn<=Fuel?
20	43,33 22	g GTO 22	-->	Yes, so OK
21	43,33 42	g GTO 42	-->	No, so prepare for crash
22	44,30 2		STO - 2		Subtract burn from fuel
23	5		5		
24	30		-		
25	44 3		STO 3		Acceleration is burn-5
26	2		2		
27	10		/		
28	45 0		RCL 0		
29	40		+		
30	45 1		RCL 1		
31	40		+		
32	44 0		STO 0		Altitude X=X+V+A/2
33	0		0		
34	43 34		g x<=y		If 0<=Altitude?
35	43,33 37	g GTO 37	-->	Yes, so OK
36	43,33 53	g GTO 53	-->	No, so crash
37	45 3		RCL 3		
38	44,40 1		STO + 1		V=V+A
39	45 2		RCL 2		Display fuel remaining
40	43 31		g PSE		
41	43,33 02	g GTO 02	-->	Return to display V.X
42	45 1		RCL 1		Show crash
43	36		ENTER		
44	20		*		
45	45 0		RCL 0		
46	1		1		
47	0		0		
48	20		*		
49	40		+		
50	43 21		g SQR		V=Sqrt(V*V+2gX)
51	16		CHS		Show crash as down
52	44 1		STO 1		V
53	45 1		RCL 1		Jump here if hit ground
54	42 0		f 0		
55	43,33 0		g GTO 00	-->	Stop

Теперь вводим начальные данные:

  • Начальная высота 500 метров (в оригинале – футов) в регистр памяти 0: 500 STO 0
  • Начальная скорость -50 м/сек в регистр 1: 50 CHS STO 1
  • Запас топлива 120 кг в регистр 2: 120 STO 2

Нажимаем R/S, на экране число: целая часть показывает скорость, дробная – высоту. В регистре 2 находится текущий запас топлива.

Начинаем торможение. Вводим расход 5 кг чтобы не ускорять падение. 5 R/S - на секунду экран показывает 115 – это запас топлива, затем новые данные телеметрии: -50,0450. Высота 450, скорость -50. Дальше протокол в виде "расход топлива : результат".
5 : -50,0400
5 : -50,0350
5 : -50,0300
10 : -45,0253
5 : -45,0208
5 : -45,0163
5 : -45,0118
10 : -40,0075
10 : -35,0038
Резко тормозим...
25 : -15,0038
Смотрим STO 2: осталось всего 30 кг топлива!
20 : 0,0005
Мы зависли в 5 метрах от Луны!
3 : -2,0004
3 : -4,0001
Осталось 4 кг, используем их все: 4 R/S
-4

Посадка со скоростью -4 м/с. Для первого раза неплохо, но можно и лучше. Не сомневаюсь, что опытным пилотам «Лунолета-1» или тем более динамического орбитального "Лунолет-3" не составит труда прилуниться с почти нулевой скоростью.

Мягкой посадки!

Приложение для любопытных

Несколько фото ПМК HP-12C, из которых видна его специализация на финансово-статистические расчеты. Например, отсутствует тригонометрия, но есть такие операции, как умножение или деление на 12 :)

Стандартный набор: маленькое печатное руководство, все остальное - на прилагаемом диске. Очень приятные клавиши.

Первым делом я заменил разделитель по тысячам на точку, а десятичную точку - на запятую. Из американской в почти европейскую. Жаль, нельзя пробел вместо точки использовать.

Две стандартные батарейки и "шпаргалка" по некоторым функциям. ПМК бережливый, если в течение минуты-двух не касаться клавиш, дисплей отключается. Программа и данные, конечно, сохраняются.

Метки публикаций: