Você acaba tendo muitos condicionais longos e chatos no seu código:
if flag == 1:
while have != needed:
if type == 7:
Eles podem ser transformados em seus <3equivalentes de condicionais muito mais amáveis :
if abs(flag - 1) + 2 <3:
while 3 - abs(have - needed) <3:
if 2 + abs(type - 7) <3:
Tarefa
Sua tarefa é levar um condicional e torná-lo em termos de <3. O único espaçamento que importa é que não há entre <e 3.
Condicionais serão duas expressões separadas por um ou outro ==, !=, >, <, >=ou <=.
As expressões conterão apenas adição, subtração, negação unária ( -something), onde houver uma +ou -antes de cada variável ou número (exceto a primeira que não tem nada ou -antes dela).
Os números serão [0-9]+e as variáveis serão [a-z]+. Se a resposta precisar usar |x|(O valor absoluto de x), use a abs()função Você pode assumir que todas as variáveis são números inteiros e todas as constantes numéricas na entrada são <1000.
A saída não precisa estar na sua forma mais simples. Ele precisa ser uma condicional como acima, o que significa que são apenas duas expressões, separadas por um sinal condicional, mas também pode usar a absfunção, incluindo uma expressão válida, e depois age como uma variável, em termos de validade.
Se a entrada não tiver uma saída para qualquer valor de uma variável, imprima uma condição que é sempre falsa, mas ainda em termos de <3.
Parte do desafio é descobrir como fazê-lo, mas aqui estão as etapas para o have != neededacima:
have != needed
have - needed != 0
abs(have - needed) > 0
-abs(have - needed) < 0
3 - abs(have - needed) <3
Pontuação
Isso é código-golfe, então o código válido mais curto, em bytes, vence.
Casos de teste
(Observe que essas saídas não são as únicas, mas tentei simplificá-las.)
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