Ce défi est le premier d'une série de deux défis sur la répétition. Le second sera bientôt disponible.
Dans une langue appelée la répétition (quelque chose que je viens d'inventer), il y a une chaîne infinie de 12345678901234567890...
, avec 1234567890
répétition pour toujours.
La syntaxe suivante est disponible pour les numéros de sortie:
+-*/
: Cela insère l'opérateur dans la chaîne de chiffres répétitifs.- Exemples:
+
->1+2
=3
(L'+
insère un+
entre1
et2
)+*
->1+2*3
=1+6
=7
(Identique à ci-dessus, sauf que deux opérateurs sont utilisés maintenant)/
->1/2
=0
(la répétition utilise une division entière)//
->1/2/3
=0/3
=0
(la répétition utilise "l'association gauche" avec plusieurs soustractions et divisions)
- Chaque opérateur est inséré de sorte qu'il ait un chiffre à sa gauche, sauf s'il y en a
c
(voir ci-dessous).
- Exemples:
c
: Concatène avec le chiffre suivant de la chaîne.- Exemples:
c+
->12+3
=15
(Lec
"continue" le1
et le concatène avec le chiffre suivant,,2
pour former12
)+c
->1+23
=24
ccc
->1234
- Exemples:
()
: Supports pour le traitement des nombres.- Exemples:
(c+)*
->(12+3)*4
=15*4
=60
(la répétition utilise l'ordre des opérations)(c+)/c
->(12+3)/45
=15/45
=0
(cc+c)/
->(123+45)/6
=168/6
=28
- Exemples:
s
: Ignorer un nombre (supprime le nombre de la chaîne infinie).s+
->2+3
=5
(s
saute1
)csc
->124
(le premierc
concats1
et2
, less
sauts3
et les derniersc
concats12
à4
)+s+
->7
(La première+
ajoute1
et2
à faire3
,s
skips3
, et la finale+
ajoute3
à4
faire7
)cs*(++)
->12*(4+5+6)
=12*15
=180
Dans les exemples ci-dessus, seule une quantité finie de chiffres dans la chaîne infinie est utilisée. Le nombre de chiffres utilisé est équivalent à number of operators, concats and skips + 1
.
Votre tâche consiste, lorsque vous recevez une chaîne de code de répétition, à sortir le résultat.
Voici des exemples d'entrée et de sortie:
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
C'est le golf de code, donc le code le plus court en octets gagne!
Spécifications:
- Vous avez la garantie que le résultat n'ira jamais au-dessus
2^31-1
. - Vous avez également la garantie que l'entrée ne comprendra que les symboles
+-*/cs()
. - Un programme vide sortira
1
.
s+
c'est 2+3
son premier exemple. Et s
continue de m'écouter. Je me demande comment se +s()+
développe. S'il est 1+(2)+4
alors (
vient avant 2
mais s
qui vient même avant les (
skips apparemment encore 3
, non 2
. Si toutefois le résultat est 1+(3)+4
alors l'effet d'un s
dépend de ce qui vient après (comparez-le avec +s+
)
sc
est 23
et s+
est 1+3
? Ne s
sautez le 1
maintenant ou 2
? Tous les exemples utilisent la première opération sur les opérandes 1
et 2
... il sc
devrait en être ainsi 13
.
~
s? Ne nous laisse pas pendre.