Esse desafio é o primeiro de uma série de dois desafios sobre Repetição. O segundo será lançado em breve.
Em uma linguagem chamada Repetition (algo que acabei de inventar), existe uma sequência infinita de 12345678901234567890..., com1234567890 repetindo sempre.
A seguinte sintaxe está disponível para gerar números:
+-*/: Isso insere o operador na sequência de dígitos repetidos.- Exemplos:
+->1+2=3(+insere um+entre1e2)+*->1+2*3=1+6=7(O mesmo que acima, exceto que dois operadores são usados agora)/->1/2=0(Repetição usa divisão inteira)//->1/2/3=0/3=0(A repetição usa "associação à esquerda" com várias subtrações e divisões)
- Cada operador é inserido para ter um dígito à esquerda, a menos que haja
c(veja abaixo).
- Exemplos:
c: Concatena com o próximo dígito na sequência.- Exemplos:
c+->12+3=15(Oc"continua"1e o concatena com o próximo dígito2, para formar12)+c->1+23=24ccc->1234
- Exemplos:
(): Colchetes para processar números.- Exemplos:
(c+)*->(12+3)*4=15*4=60(a repetição usa a ordem das operações)(c+)/c->(12+3)/45=15/45=0(cc+c)/->(123+45)/6=168/6=28
- Exemplos:
s: Pula um número (remove o número da sequência infinita).s+->2+3=5(spula1)csc->124(a primeiracconcats1e2, osssaltos3e as finaiscconcats12a4)+s+->7(O primeiro+adiciona1e2fazer3,ssaltos3, ea final+acrescenta3a4fazer7)cs*(++)->12*(4+5+6)=12*15=180
Nos exemplos acima, apenas uma quantidade finita de dígitos na cadeia infinita é usada. O número de dígitos usados é equivalente a number of operators, concats and skips + 1.
Sua tarefa é, quando receber uma sequência de códigos de repetição, gerar o resultado.
Exemplos de entrada e saída são:
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
Este é o código golf, pelo que o código mais curto em bytes vence!
Especificações:
- Você está garantido que o resultado nunca será superior
2^31-1. - Você também tem a garantia de que a entrada consistirá apenas dos símbolos
+-*/cs(). - Um programa vazio será exibido
1.
s+é 2+3o primeiro exemplo. E ainda scontinua me incomodando. Eu me pergunto como se +s()+expande. Se é 1+(2)+4então (vem antes, 2mas o sque vem antes mesmo do (aparentemente ainda pula 3, não 2. Se, contudo, o resultado é 1+(3)+4então o efeito de um sdepende do que vem depois dela (compará-lo com +s+)
scé 23e s+é 1+3? Será que spular a 1agora ou o 2? Todos os exemplos usam a primeira operação em operandos 1e 2... assim scdeve ser 13.
~s? Não nos deixe esperando.