Dada uma expressão que corresponde ao regex /^[-~]*x$/
, avalie-o em termos de x
e produza uma string correspondente ao regex /^-?x[+-]\d+$/
.
Por exemplo, a sequência é -~x
avaliada como x+1
, enquanto a sequência é -~-x
avaliada como -x+1
e a sequência é -~-~--x
avaliada como x+2
.
Começamos x
e avaliamos a string da direita para a esquerda. -
nega o termo, enquanto ~
converte y
para -y-1
.
Casos de teste:
x x+0
~x -x-1
-~x x+1
~-~x -x-2
-~-~x x+2
--~~x x+0
~-x x-1
-~-x -x+1
Isso é código-golfe . A resposta mais curta em bytes vence.
O formato de entrada / saída é rigoroso. O "x"
é obrigatório.
x+010
vez dex+10
para-~-~-~-~-~-~-~-~-~-~x
? Corresponde ao segundo regex.~
enquanto ele não foi definido.Respostas:
Python 2 ,
424139 bytesExperimente online!
fonte
Retina ,
4744 bytesExperimente online! Editar: salvou 3 bytes graças a @MartinEnder. Expansão:
Exclua pares de duplicatas adjacentes.
Conte o número de
~
s que nos dá a magnitude do termo.Se o primeiro caractere for a
~
, o termo deverá ser negativo.Se o número de se
~
es-
for ímpar, entãox
deve ser negativo.fonte
JavaScript, 59 bytes
Experimente online!
fonte
-
em uma linha. (ie--~-~x
)Perl 5 , 75 + 1 (-n) = 76 bytes
Experimente online!
fonte
C (gcc) , 69 bytes
Experimente online!
-1 byte graças a @ThePirateBay
fonte
Java 8, 186 bytes
Definitivamente espaço para melhorias ..
Explicação:
Experimente aqui.
fonte