Este desafío es el primero de una serie de dos desafíos sobre la repetición. El segundo estará listo pronto.
En un lenguaje llamado Repetición (algo que acabo de inventar), consta de una cadena infinita de 12345678901234567890..., con la 1234567890repetición para siempre.
La siguiente sintaxis está disponible para los números de salida:
+-*/: Esto inserta el operador en la cadena de dígitos repetidos.- Ejemplos:
+->1+2=3(+inserta un+entre1y2)+*->1+2*3=1+6=7(Igual que el anterior, excepto que ahora se utilizan dos operadores)/->1/2=0(La repetición usa división entera)//->1/2/3=0/3=0(La repetición usa "asociación izquierda" con múltiples restas y divisiones)
- Cada operador se inserta de modo que tenga un dígito a su izquierda, a menos que haya
cun (vea a continuación).
- Ejemplos:
c: Se concatena con el siguiente dígito en la cadena.- Ejemplos:
c+->12+3=15(Elc"continúa" el1y lo concatena con el siguiente dígito,,2para formar12)+c->1+23=24ccc->1234
- Ejemplos:
(): Corchetes para procesar números.- Ejemplos:
(c+)*->(12+3)*4=15*4=60(La repetición usa el orden de las operaciones)(c+)/c->(12+3)/45=15/45=0(cc+c)/->(123+45)/6=168/6=28
- Ejemplos:
s: Omite un número (elimina el número de la cadena infinita).s+->2+3=5(ssalta1)csc->124(Los primeroscconcatos1y2, losssaltos3y loscconcatos finales12a4)+s+->7(La primera+suma1y2para hacer3,ssaltos3, y la final+se suma3a4hacer7)cs*(++)->12*(4+5+6)=12*15=180
En los ejemplos anteriores, solo se usa una cantidad finita de dígitos en la cadena infinita. El número de dígitos utilizados es equivalente a number of operators, concats and skips + 1.
Su tarea es, cuando se le da una cadena de código de repetición, generar el resultado.
Ejemplos de entrada y salida son:
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
Este es el código de golf, por lo que gana el código más corto en bytes.
Especificaciones:
- Le garantizamos que el resultado nunca superará
2^31-1. - También tiene la garantía de que la entrada solo consistirá en los símbolos
+-*/cs(). - Se generará un programa vacío
1.
code-golf
math
code-golf
string
number
arithmetic
code-golf
ascii-art
kolmogorov-complexity
code-golf
number-theory
code-golf
math
code-golf
stack-exchange-api
code-golf
ascii-art
code-golf
string
code-golf
number
integer
code-golf
number
arithmetic
code-golf
puzzle-solver
code-challenge
quine
palindrome
polyglot
clismique
fuente
fuente

~s? No nos dejes colgando.s+es2+3su primer ejemplo. Y todavíasme sigue molestando. Me pregunto cómo se+s()+expande. Si es1+(2)+4así,(viene antes,2peroseso viene incluso antes de que(aparentemente salte3, no2. Sin embargo, si el resultado es1+(3)+4el efecto de asdepende de lo que viene después (compárelo con+s+)sces23ys+es1+3? ¿Sessalta el1ahora o el2? Todos los ejemplos usan la primera operación en operandos1y2... asíscdebería ser13.Respuestas:
JavaScript (ES6), 110 bytes
Muy simple, pero la división entera agrega 25 bytes. Por alguna razón, una expresión regular en JS no puede coincidir tanto con el comienzo de una cadena como con el primer carácter, por lo que también agrega algunos bytes.
Cómo funciona
)) que no esté inmediatamente antes de a(.c, un dígito +sal principio (1s2->2), y cadas+ un dígito (3s4->3).1/2->(1/2|0)).fuente
ss+regresa6, cuando está destinado a regresar7(Los dossomiten1y2, entonces,+agrega3y4)./^|,|$/gsolo coincidirá una vez al principio porque ambas coincidencias tendrían el mismo índice.$no tiene el mismo problema porque la coincidencia tiene un índice mayor que cualquier otra coincidencia posible.Lote, 332 bytes.
El comportamiento de
shace esto muy incómodo. (Tal vezcsdebería evaluar a13y-sa-2?) Variables:scadena de entrada (explícitamente en blanco porque set / p no cambia la variable si no ingresa nada)eexpresión parcial en aritmética de enteros normales (a la que podemos pasarset/acomo una forma deeval)dsiguiente dígito de la cadena infinita de dígitosrlado derecho del último operador. No podemos concatenar esto de inmediato porque(debe ser lo primero, pero debemos almacenarlo para quesno se incremente. Afortunadamente, hace que el manejo)sea un poco más fácil.cCarácter actual.fuente