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 1234567890immer 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+zwischen1und 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 fort1und verkettet es mit der nächsten Ziffer, um2sich zu bilden12)+c->1+23=24ccc->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 erstencConcats1und2, diesSkips3und die letztencConcats12zu4)+s+->7(Das erste+fügt hinzu1und2zu machen3,süberspringt3und das letzte+fügt hinzu,3um4zu 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+3als erstes Beispiel. Und snervt mich immer noch. Ich frage mich, wie sich +s()+ausdehnt. Wenn es 1+(2)+4dann (vorher kommt, 2aber das skommt noch bevor das (scheinbar noch überspringt 3, nicht 2. Wenn jedoch das Ergebnis ist, 1+(3)+4dann shängt die Wirkung von a davon ab, was danach kommt (vergleiche es mit +s+)
scist 23und s+ist 1+3? Hat süberspringen die 1jetzt oder 2? Alle Beispiele verwenden die erste Operation für Operanden 1und 2... scsollten es auch sein 13.
~s? Lass uns nicht hängen.