Wprowadzenie:
Rzućmy okiem na standardowy kalkulator w systemie Windows: w
przypadku tego wyzwania przyjrzymy się tylko następującym przyciskom i zignorujemy wszystko inne:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
Wyzwanie:
Wejście:
Otrzymasz dwa wejścia:
- Jednym z nich jest wskazanie obrotu w krokach co 90 stopni
- Druga to lista współrzędnych reprezentujących przyciski naciskane na obróconym kalkulatorze.
Na podstawie pierwszego wejścia obracamy powyższy układ zgodnie z ruchem wskazówek zegara w krokach co 90 stopni. Więc jeśli dane wejściowe są 0 degrees
, pozostają niezmienione; ale jeśli wejście jest 270 degrees
, zostanie ono obrócone trzy razy w prawo (lub raz w lewo). Oto cztery możliwe układy:
Default / 0 degrees:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
90 degrees clockwise:
0 1 4 7
0 2 5 8
. 3 6 9
+ - * /
180 degrees:
+ . 0 0
- 3 2 1
* 6 5 4
/ 9 8 7
270 degrees clockwise / 90 degrees counterclockwise:
/ * - +
9 6 3 .
8 5 2 0
7 4 1 0
Drugim wejściem jest lista współrzędnych w dowolnym rozsądnym formacie † . Na przykład (tablica liczb całkowitych 2D 0 z indeksem):
[[1,2],[2,3],[0,3],[1,0],[1,1]]
Wyjście: Wyprowadzamy
zarówno sumę, jak i wynik (i znak równości =
).
Przykład:
Jeśli więc wejściem jest 270 degrees
i [[1,2],[2,3],[0,3],[1,0],[1,1]]
, wyjściem będzie:
517*6=3102
Zasady konkursu:
- † Dane wejściowe mogą mieć dowolny rozsądny format. Pierwsze wejście może być
0-3
,1-4
,A-D
,0,90,180,270
, itd. Drugie wejście może być 0-indeksowane tablicę 2D, 1-indeksowane tablica 2D, String, lista obiektów punktowej, itd rozmowy. Możliwe jest nawet zamianę współrzędnych xiy w porównaniu z podanymi przykładowymi danymi wejściowymi. Podaj formaty wejściowe, których użyłeś w swojej odpowiedzi! - Możesz dodawać spacje (tzn.
517 * 6 = 3102
Jeśli chcesz). - Możesz dodać końcowe zera po przecinku, maksymalnie do trzech (tj.
3102.0
/3102.00
/3102.000
Zamiast3102
lub0.430
zamiast0.43
). - Nie możesz dodawać nawiasów w danych wyjściowych, więc
(((0.6+4)-0)/2)/4=0.575
nie jest to poprawny wynik. - Możesz używać innych symboli operandów w swoim języku. Tak
×
lub·
zamiast*
; lub÷
zamiast/
; itp. - Ponieważ kalkulator automatycznie oblicza przy wprowadzaniu argumentu, należy zignorować pierwszeństwo operatora!Tak
10+5*3
spowoduje45
((10+5)*3=45
), a nie25
(10+(5*3)=25
)
(tj10
→+
→5
→*
(obecnie 15 wyświetla się na wyświetlaczu) →3
→=
(teraz wyświetla odpowiedź45
)). Należy o tym pamiętać podczas korzystaniaeval
i podobnych funkcji na wynikowej sumie. - Nie będzie żadnych przypadków testowych do dzielenia przez 0.
- Nie będzie żadnych przypadków testowych zawierających więcej niż trzy cyfry dziesiętne, więc nie trzeba zaokrąglać wyniku.
- Nie będzie żadnych przypadków testowych, w których wiele operandów podąży za sobą, lub w których dwie kropki będą podążać za sobą.
- Nie będzie żadnych przypadków testowych dla liczb ujemnych. Znak minus (
-
) będzie używany tylko jako operand, a nie jako ujemny. .##
Przed przecinkiem nie będzie żadnych przypadków testowych bez numeru wiodącego (tzn.2+.7
Nie będzie to prawidłowy przypadek testowy, ale2+0.7
może być).
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi odnoszą się standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe:
Input: 270 degrees & [[1,2],[2,3],[0,3],[1,0],[1,1]]
Output: 517*6=3102
Input: 90 degrees & [[3,1],[0,0],[0,1],[3,3],[2,0],[0,3],[0,0],[0,2],[3,0],[2,1]]
Output: 800/4+0.75=200.75
Input: 0 degrees & [[0,0],[1,0],[2,0],[3,0],[1,2],[2,1],[2,2]]
Output: 789/263=3
Input: 180 degrees & [[3,0],[1,0],[1,2],[0,0],[3,2],[0,1],[2,0],[0,3],[2,1],[0,3],[3,2]]
Output: 0.6+4-0/2/4=0.575
1+-*/+-*/2
da 0.5
kalkulator Windows (10).
[1,3],
2+.7
?