Étant donné une expression correspondant à l'expression régulière /^[-~]*x$/
, évaluez-la en termes de x
et sortie une chaîne correspondant à l'expression régulière /^-?x[+-]\d+$/
.
Par exemple, la chaîne est -~x
évaluée à x+1
, tandis que la chaîne est -~-x
évaluée à -x+1
et la chaîne est -~-~--x
évaluée à x+2
.
Nous partons de x
et évaluons la chaîne de droite à gauche. -
annule le terme, tandis qu'il se ~
convertit y
en -y-1
.
Testcases:
x x+0
~x -x-1
-~x x+1
~-~x -x-2
-~-~x x+2
--~~x x+0
~-x x-1
-~-x -x+1
C'est du code-golf . La réponse la plus courte en octets l'emporte.
Le format d'entrée / sortie est strict. Le "x"
est obligatoire.
x+010
au lieu dex+10
pour-~-~-~-~-~-~-~-~-~-~x
? Il correspond à la deuxième expression régulière.~
alors qu'il n'a pas été définiRéponses:
Python 2 ,
424139 octetsEssayez-le en ligne!
la source
Rétine ,
4744 octetsEssayez-le en ligne! Edit: sauvé 3 octets grâce à @MartinEnder. Expansion:
Supprimez des paires de doublons adjacents.
Comptez le nombre de
~
s qui nous donne l'ampleur du terme.Si le premier caractère est un,
~
le terme doit être négatif.Si le nombre de
~
s et de-
s est impair, lex
doit être négatif.la source
JavaScript, 59 octets
Essayez-le en ligne!
la source
-
consécutifs. (c.-à-d.--~-~x
)Perl 5 , 75 + 1 (-n) = 76 octets
Essayez-le en ligne!
la source
C (gcc) , 69 octets
Essayez-le en ligne!
-1 octet grâce à @ThePirateBay
la source
Java 8, 186 octets
Certainement place pour des améliorations ..
Explication:
Essayez-le ici.
la source