Іноді корисно запустити математичну задачу з кількома входами. Мета цього завдання - скласти програму, яка полегшує це завдання.
Вирази, що утворюють число
Ви повинні підтримувати 3 типи вираження:
- Генератор одиничних чисел: Дуже простий, просто буквальний номер
- Генератор декількох чисел: Tad складніше. Вони оточені квадратними дужками (
[]
). Числа,
у виразу розділені комами ( ). Приклад[-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 як до значення?