Einführung:
Werfen wir einen Blick auf einen Standardrechner in Windows:
Bei dieser Herausforderung werden nur die folgenden Schaltflächen betrachtet und alles andere ignoriert:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
Herausforderung:
Input:
Sie erhalten zwei Inputs:
- Eines ist etwas, um die Drehung in Schritten von 90 Grad anzuzeigen
- Die andere ist eine Liste von Koordinaten, die die auf dem gedrehten Rechner gedrückten Tasten darstellen.
Basierend auf der ersten Eingabe drehen wir das oben erwähnte Layout im Uhrzeigersinn in Schritten von 90 Grad. Wenn die Eingabe also ist 0 degrees
, bleibt sie wie sie ist. Ist 270 degrees
dies jedoch der Fall, wird der Eingang dreimal im Uhrzeigersinn (oder einmal gegen den Uhrzeigersinn) gedreht. Hier sind die vier möglichen Layouts:
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
Die zweite Eingabe ist eine Liste von Koordinaten in jedem vernünftigen Format † . Zum Beispiel (0-Index 2D Integer-Array):
[[1,2],[2,3],[0,3],[1,0],[1,1]]
Ausgabe:
Wir geben sowohl die Summe als auch das Ergebnis (und ein Gleichheitszeichen =
) aus.
Beispiel:
Wenn also die Eingabe 270 degrees
und ist [[1,2],[2,3],[0,3],[1,0],[1,1]]
, wird die Ausgabe zu:
517*6=3102
Herausforderungsregeln:
- † Die Eingaben können in jedem vernünftigen Format erfolgen. Der erste Eingang kann sein
0-3
,1-4
,A-D
,0,90,180,270
etc. Der zweite Eingang ein 0-indiziert 2D - Array sein kann, 1-indiziert 2D - Array, ein String, Liste von Point-Objekten usw. Ihrem Anruf. Es ist sogar möglich, die x- und y-Koordinaten im Vergleich zu den angegebenen Beispieleingaben zu vertauschen. Bitte geben Sie an, welche Eingabeformate Sie in Ihrer Antwort verwendet haben! - Sie können Leerzeichen hinzufügen,
517 * 6 = 3102
wenn Sie möchten. - Sie dürfen nachfolgende Nullen nach dem Komma hinzufügen, zu einem Maximum von drei (dh
3102.0
/3102.00
/3102.000
anstelle von3102
oder0.430
statt0.43
). - Sie dürfen der Ausgabe keine Klammern hinzufügen, es
(((0.6+4)-0)/2)/4=0.575
handelt sich also nicht um eine gültige Ausgabe. - Sie dürfen andere Operandensymbole für Ihre Sprache verwenden. Also
×
oder·
statt*
; oder÷
statt/
; etc. - Da ein Taschenrechner bei der Eingabe eines Operanden automatisch rechnet, sollten Sie die Operator-Priorität ignorieren! Das
10+5*3
Ergebnis ist also45
((10+5)*3=45
), nicht25
(10+(5*3)=25
)
(dh10
→+
→5
→*
(es wird jetzt 15 im Display angezeigt) →3
→=
(es wird jetzt die Antwort angezeigt45
)). Beachten Sie dies, wenn Sieeval
und ähnliche Funktionen für die resultierende Summe verwenden. - Es gibt keine Testfälle für die Division durch 0.
- Es werden keine Testfälle mit mehr als drei Dezimalstellen als Ergebnis angezeigt, sodass das Ergebnis nicht gerundet werden muss.
- Es wird keine Testfälle geben, in denen mehrere Operanden aufeinander folgen oder zwei Punkte aufeinander folgen.
- Es wird keine Testfälle für negative Zahlen geben. Das Minuszeichen (
-
) wird nur als Operand verwendet, nicht als negativer. - Es werden keine Testfälle
.##
ohne vorangestellte Nummer vor dem Komma angezeigt (dh es2+.7
wird kein gültiger Testfall angezeigt, dies2+0.7
könnte aber der Fall sein).
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methode mit den richtigen Parametern und vollständige Programme verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie ggf. auch eine Erklärung hinzu.
Testfälle:
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
Will gibt 0.5
auf Windows (10) Rechner.
[1,3],
2+.7
?