Questa sfida è la prima di una serie a due sfide sulla ripetizione. Il secondo arriverà presto.
In una lingua chiamata Repetition (qualcosa che ho appena inventato), c'è una stringa infinita di 12345678901234567890..., con la 1234567890ripetizione per sempre.
La seguente sintassi è disponibile per i numeri di output:
+-*/: Questo inserisce l'operatore nella stringa di cifre ripetute.- Esempi:
+->1+2=3(+inserisce una+tra1e2)+*->1+2*3=1+6=7(Come sopra, tranne che ora vengono utilizzati due operatori)/->1/2=0(La ripetizione utilizza la divisione intera)//->1/2/3=0/3=0(La ripetizione usa "associazione sinistra" con più sottrazioni e divisioni)
- Ogni operatore è inserito in modo che abbia una cifra alla sua sinistra, a meno che non ci siano
c(vedi sotto).
- Esempi:
c: Si concatena con la cifra successiva nella stringa.- Esempi:
c+->12+3=15(Ilc"continua" il1e lo concatena con la cifra successiva2, per formare12)+c->1+23=24ccc->1234
- Esempi:
(): Parentesi per l'elaborazione dei numeri.- Esempi:
(c+)*->(12+3)*4=15*4=60(la ripetizione utilizza l'ordine delle operazioni)(c+)/c->(12+3)/45=15/45=0(cc+c)/->(123+45)/6=168/6=28
- Esempi:
s: Salta un numero (rimuove il numero dalla stringa infinita).s+->2+3=5(ssalta1)csc->124(I primicconcats1e2, issalti3, e le finalicconcats12a4)+s+->7(Il primo+aggiunge1e2per fare3,ssalta3, e la finale+aggiunge3a4fare7)cs*(++)->12*(4+5+6)=12*15=180
Negli esempi precedenti, viene utilizzata solo una quantità finita di cifre nella stringa infinita. Il numero di cifre utilizzate è equivalente a number of operators, concats and skips + 1.
Il tuo compito è, quando viene data una stringa di codice ripetizione, produrre il risultato.
Esempi di input e output sono:
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
Questo è il codice golf, quindi vince il codice più breve in byte!
Specifiche:
- Hai la garanzia che il risultato non andrà mai oltre
2^31-1. - Hai anche la garanzia che l'input consisterà solo dei simboli
+-*/cs(). - Verrà emesso un programma vuoto
1.
s+è 2+3il primo esempio. E scontinua ancora a infastidirmi. Mi chiedo come si +s()+espande. Se è 1+(2)+4allora (viene prima, 2ma sciò che viene anche prima che (apparentemente salti ancora 3, no 2. Se tuttavia il risultato è 1+(3)+4quindi l'effetto di a sdipende da ciò che viene dopo (confrontalo con +s+)
scè 23ed s+è 1+3? Fa ssaltare l' 1ora o il 2? Tutti gli esempi usano la prima operazione su operandi 1e 2... così scdovrebbe essere 13.
~s? Non lasciarci in sospeso.