Напишіть функцію чи програму, ніж це можна зробити простою арифметикою (додавання, віднімання, множення та ділення) як в базі 10, так і в основі 2.
Функція буде приймати математичний вираз у якості введення та виводити правильний результат у правильну базу. Вхідними даними будуть n
числа, розділені одним або декількома операторами ( + - * /
).
Якщо всі вхідні значення містять лише 0 і 1, всі значення вважаються бінарними. Якщо хоча б одна цифра 2-9
, всі значення вважаються базовими 10.
Правила:
- Можна припустити, що між номерами буде лише один оператор (
10*-1
не з’явиться) - Можна припустити, що дужок не буде.
- Нормальний пріоритет оператора (спробуйте вираз у калькуляторі google, якщо ви сумніваєтесь).
- Ви не можете припустити, що будуть лише цілі числа
- Не буде провідних нулів у введенні чи виході
- Ви можете припустити, що буде надано лише дійсне введення
- Можна припустити , що все вхідні значення є позитивними (але оператор мінуса може зробити можливий негативний висновок,
1-2=-1
а10-100=-10
) - REPL не приймається
- Ви можете прийняти дані як окремі аргументи або як окремий аргумент, але введення має бути у правильному порядку.
- Тобто ви можете уявити
1-2
з вхідними аргументами1
,-
,2
, але не1
,2
,-
.
- Тобто ви можете уявити
- Ви повинні прийняти символи
+ - * /
у вводі, а неplus
іminus
т.д. - Ви повинні підтримувати значення з плаваючою комою (або до максимального обмеження вашої мови, однак підтримка лише цілих чисел не приймається).
eval
приймається
Приклади:
1+1
10
1010+10-1
1011
102+10-1
111
1+2+3
6
10*10*10
1000
11*11*11
11011
10*11*12+1
1321
10.1*10.1
110.01
20.2*20.2
408.04
10/5
2
110/10
11
Also accepted (optional line or comma-separated input):
10
+
10
-
1
11 <-- This is the output
Це код гольфу, тому найкоротший код у байтах виграє.
110/10
, чи11.0
прийнятний?