Finisci per avere un sacco di condizionali molto lunghi e noiosi nel tuo codice:
if flag == 1:
while have != needed:
if type == 7:
Questi possono essere trasformati nelle loro <3controparti condizionali molto più amabili :
if abs(flag - 1) + 2 <3:
while 3 - abs(have - needed) <3:
if 2 + abs(type - 7) <3:
Compito
Il tuo compito è quello di prendere un condizionale e farlo in termini di <3. L'unica spaziatura che conta è che non c'è nessuno tra <e 3.
Condizionali saranno due espressioni separati da entrambi ==, !=, >, <, >=o <=.
Le espressioni conterranno solo addizione, sottrazione, negazione unaria ( -something), dove esiste una +o -prima di ogni variabile o numero (tranne la prima che non ha nulla o -prima di essa).
I numeri saranno [0-9]+e le variabili lo saranno [a-z]+. Se è necessario utilizzare la risposta |x|(Il valore assoluto di x), utilizzare la abs()funzione. Si può presumere che tutte le variabili siano numeri interi e che tutte le costanti numeriche nell'input siano <1000.
L'output non deve necessariamente essere nella sua forma più semplice. Deve essere un condizionale come sopra, nel senso che sono solo due espressioni, separate da un segno condizionale, ma può anche usare la absfunzione, racchiudendo un'espressione valida, e quindi si comporta come una variabile, in termini di validità.
Se l'input non ha un output per nessun valore di una variabile, genera una condizione che è sempre falsa, ma comunque in termini di <3.
Parte della sfida è capire come farlo, ma ecco i passaggi per quanto have != neededsopra:
have != needed
have - needed != 0
abs(have - needed) > 0
-abs(have - needed) < 0
3 - abs(have - needed) <3
punteggio
Questo è code-golf, quindi vince il codice valido più breve, in byte.
Casi test
(Nota, queste uscite non sono le uniche uscite, ma ho provato a semplificarle.)
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