;#
é uma linguagem muito simples. Possui 2 comandos:
;
irá incrementar o acumulador#
gera o módulo acumulador 127 e redefine o acumulador
;$
também é muito simples e é muito semelhante (e também ainda não existe). Possui 2 comandos:
;
irá incrementar o acumulador$
gera o módulo 127 do acumulador. No entanto, ele não reinicia o acumulador.
Desafio
Crie um programa que converterá ;#
código em ;$
código. Ou seja, dada a entrada a
usando métodos padrão, a saída é a mais curta, de b
modo que a
nas ;#
saídas a mesma coisa que b
em ;$
. A entrada conterá apenas os caracteres ';'
e '#'
. A entrada não terá ponto e vírgula à direita. Ou seja, ele corresponderá ao regex (;*#)+
. Isso também significa que a entrada não ficará em branco. Observe que ;;;;##
é possível (equivalente a ord(4) ord(0)
).
Exemplos
;# code -> ;$ code
;;;;;;;;;;#;;;;;;;;;;;;# -> ;;;;;;;;;;$;;$
;;;;;;;;;;;;;;#;;;# -> ;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# -> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;$$;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;$;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$ (Hello, World!)
;#
perguntas por aí. Eles não são muito interessantes.;#
desafios anteriores ; foi o primeiro após o compilador e o transpiler IIRC.;#
entrada é a mais curta?Respostas:
JavaScript (ES6), 68 bytes
Exemplos
Mostrar snippet de código
fonte
Gelatina , 18 bytes
Experimente online!
Como funciona
fonte
PHP, 99 bytes
fonte
J , 37 bytes
Experimente online!
fonte
Python,
1011009785 bytes1 bytes salvos graças a @WheatWizard
fonte
)
efor
Retina , 52 bytes
Experimente online! Inclui suíte de teste. Explicação: 127 é adicionado a cada um
#
para facilitar o módulo de subtração 127; os#
são alterados para$
ao mesmo tempo. A subtração em si é tratada pelo lookbehind, o(?<=\$\1(;{127})?\$\1)
que garante que subtraímos o número de;
s entre os dois#
s anteriores (que lida com o caso quando houver mais;
s) ou 127 a menos que esse número (que lida com o caso quando há menos;
s e eles precisam ultrapassar 127). Um lookbehind é usado para que todas as substituições possam ser calculadas em uma única passagem. Para que sempre haja dois#
s anteriores , dois#
s extras são temporariamente prefixados.fonte
Perl 5
-p
, 65 bytesExperimente online!
fonte