Ostatnio piszę nowy język , aby uniknąć konieczności porządkowania operacji , po prostu odpowiednio nawiasuję każde wyrażenie, aby całkowicie tego uniknąć.
Ponieważ nawiasy znajdują się w kodach znaków 40-41, kod będzie musiał być jak najkrótszy.
Przykłady
1+2*3
(1+(2*3))
2*(3+4)
(2*(3+4))
2*3/4+3
(((2*3)/4)+3)
342*32/8
((342*32)/8)
Zasady
Jedyne operacje, które musisz obsłużyć to: *
(mnożenie), /
(dzielenie), +
(dodawanie) i -
(odejmowanie).
- Kolejność operacji jest:
- Nawias
- Mnożenie, dzielenie
- Dodawanie, odejmowanie
- Powinieneś iść w lewo-prawo
- Liczby wejściowe zawsze będą dodatnimi liczbami całkowitymi (patrz bonusy)
Bonusy
-20%, jeśli poradzisz sobie z negacją:
3+-5
(3+(-5))
-5%, jeśli pozwalasz na umieszczenie spacji w danych wejściowych:
3 + 4
(3+4)
-10%, jeśli potrafisz obsłużyć ułamki dziesiętne w danych wejściowych:
1+.12
(1+.12)
1+0.21/3
(1+(0.21/3))
500 nagród: jeśli uda ci się napisać odpowiedź w Unnamed / Blocks
1+2+3+4
(które niektóre rozwiązania mogą być w nawiasach jako ((1+2)+(3+4))
)