; # sin reiniciar

8

;#Es un lenguaje muy simple. Tiene 2 comandos:

  • ; incrementará el acumulador
  • # emite el acumulador módulo 127 y luego reinicia el acumulador

;$También es muy simple y es muy similar (y aún no existe). Tiene 2 comandos:

  • ; incrementará el acumulador
  • $ emite el acumulador módulo 127. Sin embargo, no reinicia el acumulador.

Desafío

Cree un programa que convierta el ;#código en ;$código. Es decir, dada la entrada autilizando métodos estándar, la salida es la más corta de bmodo que aen las ;#salidas sea lo mismo que ben ;$. La entrada solo contendrá los caracteres ';'y '#'. La entrada no tendrá punto y coma final. Es decir, coincidirá con la expresión regular (;*#)+. Esto también significa que la entrada no estará en blanco. Tenga en cuenta que ;;;;##es posible (equivalente a ord(4) ord(0)).

Ejemplos

;# code -> ;$ code
;;;;;;;;;;#;;;;;;;;;;;;# -> ;;;;;;;;;;$;;$
;;;;;;;;;;;;;;#;;;# -> ;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# -> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;$$;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;$;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$ (Hello, World!)
Hiperneutrino
fuente
1
Estoy rechazando esto, porque hay demasiadas ;#preguntas dando vueltas. No son muy interesantes.
isaacg
@isaacg Ah. Gracias por tu contribución. Intentaré mantener mis desafíos más originales la próxima vez, aunque tenga en cuenta que este fue uno de los ;#desafíos anteriores ; fue el primero después del compilador y el transpilador IIRC.
HyperNeutrino
¿La ;#entrada es la más corta?
l4m2

Respuestas:

2

JavaScript (ES6), 68 bytes

s=>s.replace(/;*#/g,s=>';'.repeat((127-a+(a=s.length))%127)+'$',a=1)

Ejemplos

Arnauld
fuente
2

Jalea , 18 bytes

ṣ”#L€ṙ-I%127”;ẋp”$

Pruébalo en línea!

Cómo funciona

ṣ”#L€ṙ-I%127”;ẋp”$  Main link. Argument: s (string)

ṣ”#L€               Split s at hashes. Take the length of each resulting chunk.
     ṙ-             Rotate the result -1 units to the left / 1 unit to the right.
                    Since s won't have trailing semicola, the length of the last
                    chunk will be 0. Rotating moves this 0 to the beginning.
       I            Increments; take all forward differences. Because of the 0 we
                    removed to the beginning, the first forward difference will be
                    the length of the first chunk.
        %127        Take the differences modulo 127. In Python, `n % d' is either 0
                    or has the same sign as d, so this reports how many semicola
                    are needed to get from one code point to the next one.
            ”;ẋ     Repeat ';' k times, for each modulus k.
               p”$  Take the Cartesian product with "$", appending '$' to each run
                    of semicola.
Dennis
fuente
1

PHP, 99 bytes

while(~$c=a^$argn[$p++])j^$c?r^$c?:$a=-$b*$b=print str_repeat(";",(127+$a%127)%127)."$":$b+=!!++$a;
Tito
fuente
0

Python, 101 100 97 85 bytes

1 bytes guardados gracias a @WheatWizard

def t(c,s=0):
 for x in map(len,c.split('#')[:-1]):print(end=';'*((x-s)%127)+'$');s=x
Uriel
fuente
Puede dejar el espacio entre )yfor
Ad Hoc Garf Hunter
@WheatWizard gracias
Uriel
0

Retina , 52 bytes

^
##
#
127$*;$
^;+\$;+\$|(;+)(?<=\$\1(;{127})?\$\1)

Pruébalo en línea! Incluye suite de prueba. Explicación: 127 se agrega a cada uno #para facilitar el módulo de resta 127; los #s se cambian a $al mismo tiempo. La sustracción en sí misma se maneja mediante la mirada hacia atrás, lo (?<=\$\1(;{127})?\$\1)que garantiza que restamos el número de ;s entre los dos #s anteriores (que maneja el caso cuando hay más ;s) o 127 menos que ese número (que maneja el caso cuando hay menos ;s y necesitan pasar 127). Se utiliza un retrospectivo para que todos los reemplazos se puedan calcular en una sola pasada. Para que siempre haya dos correos #electrónicos anteriores , #se prefieren temporalmente dos correos electrónicos adicionales .

Neil
fuente