Diese Herausforderung ist die erste in einer Serie mit zwei Herausforderungen zum Thema Wiederholung. Der zweite wird bald auf sein.
In einer Sprache namens Wiederholung (nur aus etwas I), besteht dort eine unendliche Reihe von 12345678901234567890...
, mit 1234567890
immer wiederholen.
Die folgende Syntax steht für die Ausgabe von Zahlen zur Verfügung:
+-*/
: Dies fügt den Operator in die Zeichenfolge sich wiederholender Ziffern ein.- Beispiele:
+
->1+2
=3
(Das+
fügt ein+
zwischen1
und ein2
)+*
->1+2*3
=1+6
=7
(Wie oben, außer dass jetzt zwei Operatoren verwendet werden)/
->1/2
=0
(Wiederholung verwendet Ganzzahldivision)//
->1/2/3
=0/3
=0
(Wiederholung verwendet "linke Assoziation" mit mehreren Subtraktionen und Divisionen)
- Jeder Operator wird so eingefügt, dass er eine Ziffer links davon hat, es sei denn, es gibt eine
c
(siehe unten).
- Beispiele:
c
: Verkettet mit der nächsten Ziffer in der Zeichenfolge.- Beispiele:
c+
->12+3
=15
(Dasc
"setzt" das fort1
und verkettet es mit der nächsten Ziffer, um2
sich zu bilden12
)+c
->1+23
=24
ccc
->1234
- Beispiele:
()
: Klammern für die Verarbeitung von Nummern.- Beispiele:
(c+)*
->(12+3)*4
=15*4
=60
(Wiederholung verwendet die Reihenfolge der Operationen)(c+)/c
->(12+3)/45
=15/45
=0
(cc+c)/
->(123+45)/6
=168/6
=28
- Beispiele:
s
: Überspringe eine Zahl (entfernt die Zahl aus der unendlichen Zeichenfolge).s+
->2+3
=5
(s
überspringt1
)csc
->124
(Die erstenc
Concats1
und2
, dies
Skips3
und die letztenc
Concats12
zu4
)+s+
->7
(Das erste+
fügt hinzu1
und2
zu machen3
,s
überspringt3
und das letzte+
fügt hinzu,3
um4
zu machen7
)cs*(++)
->12*(4+5+6)
=12*15
=180
In den obigen Beispielen wird nur eine endliche Anzahl von Ziffern in der unendlichen Zeichenfolge verwendet. Die Anzahl der verwendeten Ziffern entspricht number of operators, concats and skips + 1
.
Ihre Aufgabe ist es, das Ergebnis auszugeben, wenn Sie eine Zeichenfolge mit Wiederholungscode erhalten.
Beispiele für Eingabe und Ausgabe sind:
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
Dies ist Code Golf, also gewinnt der kürzeste Code in Bytes!
Technische Daten:
- Sie werden garantiert, dass das Ergebnis niemals darüber hinausgeht
2^31-1
. - Sie werden auch garantiert, dass die Eingabe nur aus den Symbolen besteht
+-*/cs()
. - Ein leeres Programm wird ausgegeben
1
.
s+
ist 2+3
als erstes Beispiel. Und s
nervt mich immer noch. Ich frage mich, wie sich +s()+
ausdehnt. Wenn es 1+(2)+4
dann (
vorher kommt, 2
aber das s
kommt noch bevor das (
scheinbar noch überspringt 3
, nicht 2
. Wenn jedoch das Ergebnis ist, 1+(3)+4
dann s
hängt die Wirkung von a davon ab, was danach kommt (vergleiche es mit +s+
)
sc
ist 23
und s+
ist 1+3
? Hat s
überspringen die 1
jetzt oder 2
? Alle Beispiele verwenden die erste Operation für Operanden 1
und 2
... sc
sollten es auch sein 13
.
~
s? Lass uns nicht hängen.