Dada una expresión que coincida con la expresión regular /^[-~]*x$/, evalúela en términos de xy genere una cadena que coincida con la expresión regular /^-?x[+-]\d+$/.
Por ejemplo, la cadena se -~xevalúa como x+1, mientras que la cadena se -~-xevalúa como -x+1, y la cadena se -~-~--xevalúa como x+2.
Comenzamos xy evaluamos la cadena de derecha a izquierda. -niega el término, mientras se ~convierte ya -y-1.
Casos de prueba:
x x+0
~x -x-1
-~x x+1
~-~x -x-2
-~-~x x+2
--~~x x+0
~-x x-1
-~-x -x+1
Este es el código de golf . La respuesta más corta en bytes gana.
El formato de entrada / salida es estricto. El "x"es obligatorio.

x+010lugar dex+10para-~-~-~-~-~-~-~-~-~-~x? Coincide con la segunda expresión regular.~cuando no se ha definidoRespuestas:
Python 2 ,
424139 bytesPruébalo en línea!
fuente
Retina ,
4744 bytesPruébalo en línea! Editar: Guardado 3 bytes gracias a @MartinEnder. Expansión:
Eliminar pares de duplicados adyacentes.
Cuente el número de
~s que nos da la magnitud del término.Si el primer carácter es un,
~entonces el término debería ser negativo.Si el número de
~sy-es impar, entoncesxdebería ser negativo.fuente
JavaScript, 59 bytes
Pruébalo en línea!
fuente
-en una fila. (es decir--~-~x)Perl 5 , 75 + 1 (-n) = 76 bytes
Pruébalo en línea!
fuente
C (gcc) , 69 bytes
Pruébalo en línea!
-1 byte gracias a @ThePirateBay
fuente
Java 8, 186 bytes
Definitivamente espacio para mejoras.
Explicación:
Pruébalo aquí
fuente