Terminas teniendo muchos condicionales muy largos y aburridos en tu código:
if flag == 1:
while have != needed:
if type == 7:
Estos se pueden transformar en sus <3
contrapartes condicionales mucho más adorables :
if abs(flag - 1) + 2 <3:
while 3 - abs(have - needed) <3:
if 2 + abs(type - 7) <3:
Tarea
Su tarea es tomar un condicional y hacerlo en términos de <3
. El único espacio que importa es que no hay ninguno entre <
y 3
.
Condicionales serán dos expresiones separadas por cualquiera ==
, !=
, >
, <
, >=
o <=
.
Las expresiones solo contendrán suma, resta, negación unaria ( -something
), donde hay una +
o -
antes de cada variable o número (excepto la primera que no tiene nada o -
antes).
Los números serán [0-9]+
, y las variables serán [a-z]+
. Si la respuesta necesita usar |x|
(El valor absoluto de x
), use la abs()
función. Puede suponer que todas las variables son números enteros y que todas las constantes numéricas en la entrada son <1000.
La salida no necesita estar en su forma más simple. Es necesario que sea un condicional como el anterior, lo que significa que son solo dos expresiones, separadas por un signo condicional, pero también puede usar la abs
función, encerrando una expresión válida, y luego actúa como una variable, en términos de validez.
Si la entrada no tiene una salida para ningún valor de una variable, emite una condición que siempre es falsa, pero aún en términos de <3
.
Parte del desafío es descubrir cómo hacerlo, pero aquí están los pasos para lo have != needed
anterior:
have != needed
have - needed != 0
abs(have - needed) > 0
-abs(have - needed) < 0
3 - abs(have - needed) <3
Puntuación
Este es el código de golf, por lo que gana el código válido más corto, en bytes.
Casos de prueba
(Tenga en cuenta que estas salidas no son las únicas salidas, pero intenté simplificarlas).
flag == 1
abs(flag - 1) + 2 <3
have != needed
3 - abs(have - needed) <3
type == 7
2 + abs(type - 7) <3
x > y
3 - x + y <3
x + 5 < -y
x + 8 + y <3
x + 6 <= y
x + 8 - y <3
-x >= y + 3
x + y + 5 <3
x < x
3 <3
# Unsimplified; both would be valid outputs.
x - x + 3 <3
Respuestas:
Retina , 95 bytes
Pruébalo en línea!
Una solución bastante ingenua, pero no he podido encontrar ninguna mejora.
Esto es solo una serie de reemplazos:
Deshágase de las comparaciones "o igual a" reemplazando
x <= y
conx < 1 + y
yx >= y
conx > -1 + y
.Reemplazar
x == y
con==abs(x - y)
yx != y
con!=abs(x - y)
.Reemplace
==
con2+
y!=
con3-
, de modo que los reemplazos generales se vuelvanx == y
→2 + abs(x - y)
yx != y
→3 - abs(x - y)
.Normalice la dirección de las desigualdades restantes, reemplazando
x > y
cony < x
.Reemplazar
x < y
conx - y + 3
.Añade un corazón al final de la cadena.
fuente