A diferencia de la mayoría de los lenguajes, Python evalúa a<b<c
como se haría en matemáticas, comparando en realidad los tres números, en lugar de comparar el booleano a<b
con c
. La forma correcta de escribir esto en C (y muchas otras) sería a<b && b<c
.
En este desafío, su tarea es expandir tales cadenas de comparación de longitudes arbitrarias desde Python / representación intuitiva, hasta cómo se escribiría en otros idiomas.
Especificaciones
- Su programa tendrá que manejar los operadores:
==, !=, <, >, <=, >=
. - La entrada tendrá cadenas de comparación usando solo enteros.
- No se preocupe por la veracidad de ninguna de las comparaciones en el camino, este es un desafío puramente analítico / sintáctico.
- La entrada no tendrá espacios en blanco para evitar respuestas que trivializan el análisis dividiendo en espacios.
- Sin embargo, su salida puede tener un solo espacio que rodea solo los
&&
's, o tanto los operadores de comparación como los&&
' s, o ninguno, pero sea consistente.
Casos de prueba
Input Output
---------------------------------------------------------------
3<4<5 3<4 && 4<5
3<4<5<6<7<8<9 3<4 && 4<5 && 5<6 && 6<7 && 7<8 && 8<9
3<5==6<19 3<5 && 5==6 && 6<19
10>=5<7!=20 10>=5 && 5<7 && 7!=20
15==15==15==15==15 15==15 && 15==15 && 15==15 && 15==15
Este es el código de golf , por lo que gana el código más corto en bytes .
code-golf
parsing
conversion
syntax
code-golf
sequence
primes
code-challenge
geometry
optimization
code-golf
graph-theory
code-golf
number-theory
primes
integer
code-golf
source-layout
cops-and-robbers
code-golf
source-layout
cops-and-robbers
code-golf
sequence
primes
integer
code-golf
math
number-theory
primes
rational-numbers
code-golf
math
sequence
number-theory
primes
code-golf
string
code-golf
math
combinatorics
permutations
restricted-complexity
code-golf
array-manipulation
code-golf
number
sequence
code-golf
number
sequence
code-golf
binary-matrix
code-golf
math
tips
javascript
algorithm
code-golf
string
code-golf
number
sequence
code-golf
math
arithmetic
parsing
code-golf
number
sequence
primes
code-golf
string
ascii-art
geometry
integer
code-golf
geometry
code-golf
number
array-manipulation
code-golf
math
geometry
code-golf
number
sequence
arithmetic
integer
code-golf
string
kolmogorov-complexity
code-golf
number
code-golf
number
chess
code-golf
sequence
decision-problem
subsequence
code-golf
math
number
primes
code-golf
primes
permutations
code-golf
integer
probability-theory
statistics
code-golf
string
code-golf
sequence
decision-problem
parsing
board-game
code-golf
binary
graph-theory
code-golf
board-game
classification
tic-tac-toe
code-golf
ascii-art
polyglot
code-golf
date
code-golf
geometry
Maltysen
fuente
fuente
&&
?Respuestas:
Retina ,
332217 bytes-5 bytes gracias a @MartinEnder
Pruébalo en línea!
fuente
1>-2
no funciona para limitar desde ambos extremos a la vez ...Casco ,
1614 bytesImprime un espacio alrededor de cada operador.
Pruébalo en línea!
Explicación:
fuente
w
lugar de;
un enfoque más directo para unir cadenas con espaciosRetina ,
424722 bytesGolf masivo gracias a Kevin Cruijssen
Pruébalo en línea!
fuente
(==|!=|<=?|>=?)
puede ser\D+
(?<!^|\d)
puede ser(?<=\D)
. Además,(?=\d+)
es innecesario, el operador siempre será seguido por un operando, en cuyo punto puede soltar el+
después del\D
. También hay en$&
lugar de$1$2
, y luego se puede guardar un byte adicional capturando hacia atrás y mirando hacia adelante en lugar de capturar hacia adelante y mirar hacia atrás.(\D(\d+))(?=\D)
en la línea 1 y$1&&$2
en la línea dos es suficiente ( 22 bytes ). Pruébalo aquíV , 37 bytes
Pruébalo en línea!
Hexdump:
fuente
Clojure, 88 bytes
Actualización: en
subs
lugar declojure.string/join
.fuente
J ,
5946 bytesPruébalo en línea!
Cómo solía funcionar
Estamos buscando límites de operadores. Las cadenas "decapitadas" y "acortadas" se convierten en ceros y unos donde los 0 son dígitos, luego se juntan. Anteponer cero para que coincida con la longitud.
fuente
Python 2 ,
60595857 bytesPruébalo en línea!
fuente
re.sub(r'\D(\d+)(?=\D)',r'\g<0>&&\1',s)
ahorra 1 byte.Carbón, 29 bytes
Dos formulaciones ligeramente diferentes del mismo algoritmo básico. La cadena de entrada se itera por carácter. A medida que se encuentran los dígitos, se recopilan en una variable. Cuando se encuentra un límite entre un número y un operador, se imprime un "&&" más la variable y se borra la variable. La variable se inicializa inicialmente en un espacio para que el primer límite no active el "&&" adicional.
fuente
Jalea , 16 bytes
Pruébalo en línea!
Explicación:
fuente
Java 8, 46 bytes
Explicación:
Pruébalo aquí.
Explicación de expresiones regulares:
Ejemplo paso a paso de los reemplazos:
fuente
Perl 5 , 47 + 1 (-p) = 48 bytes
Pruébalo en línea!
fuente
Ruby , 37 bytes
Pruébalo en línea!
fuente
JavaScript (SpiderMonkey) , 43 bytes
Pruébalo en línea!
fuente