Иногда полезно запустить математическую задачу с несколькими входами. Цель этой задачи - создать программу, которая облегчит эту задачу.
Числовые выражения
Вы должны поддерживать 3 типа выражения:
- Генератор одного числа: очень просто, просто буквальное число
- Генератор нескольких номеров: немного сложнее. Тебя окружают квадратные скобки (
[]
). Числа,
в выражении разделяются запятой ( ). пример[-1,2,3.26]
. - Генератор диапазонов: он окружен фигурными скобками (
{}
). Он будет иметь 3 числа, разделенные запятой. Формат этого выражения{start,stop,step}
.start
иstop
включительно.
Правила оценки
- Вы должны поддерживать порядок операций. ( https://en.wikipedia.org/wiki/Order_of_operations#Definition )
- Вам не нужно поддерживать скобки.
- В выражении может присутствовать любое количество пробелов.
- Вы должны поддерживать числа с плавающей запятой (с любой точностью по умолчанию ваш язык в порядке).
- Деление по
0
результатам вNaN
(не число).
Ваша программа должна поддерживать умножение ( *
), деление ( /
), сложение ( +
) и вычитание (-
).
Выход
Каждая строка вывода является одной из комбинаций генераторов. Формат - это выражение (с подставленными в него действительными числами), за которым следует знак равенства (=
) и результат вычисления. Все комбинации генераторов должны быть представлены в выходных данных.
Примеры
( >>>
обозначает ввод)
>>>3 * [3,2]
3 * 3 = 9
3 * 2 = 6
>>>{1,2,3}
1 = 1 <-- this is because 1 + 3 > the end
>>>{0,2,1} + {0,1,1}
0 + 0 = 0
1 + 0 = 1
2 + 0 = 2
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
>>>6/[2,3]
6/2 = 3
6/3 = 2
>>>{1.5,2.5,0.5}
1.5 = 1.5
2 = 2
2.5 = 2.5
>>>3-{6,5,-1}
3-6 = -3
3-5 = -2
>>>5/{-1,1,1}
5/-1 = -5
5/0 = NaN
5/1 = 5
>>>4.4 / [1,2.2] + {0,2,1}
4.4 / 1 + 0 = 4.4
4.4 / 1 + 1 = 5.4
4.4 / 1 + 2 = 6.4
4.4 / 2.2 + 0 = 2
4.4 / 2.2 + 1 = 3
4.4 / 2.2 + 2 = 4
>>> [1,2] / 0 + 5
1 / 0 + 5 = NaN
2 / 0 + 5 = NaN
Программа должна быть короткой, чтобы я мог ее запомнить и использовать где угодно.
Спасибо @PeterTaylor и @geokavel за помощь мне с этим постом в песочнице
x/0
приводит ли к мгновенной оценке к NaN, или я должен рассматривать NaN как значение?