W twoim kodzie masz wiele bardzo długich, nudnych wyglądających warunków:
if flag == 1:
while have != needed:
if type == 7:
Można je przekształcić w ich znacznie bardziej urocze <3
odpowiedniki warunkowe:
if abs(flag - 1) + 2 <3:
while 3 - abs(have - needed) <3:
if 2 + abs(type - 7) <3:
Zadanie
Twoim zadaniem jest przyjęcie warunku i uczynienie go pod względem <3
. Jedyne, co się liczy, to to, że nie ma między nimi <
i 3
.
Warunkowe będą dwa wyrazy oddzielone albo ==
, !=
, >
, <
, >=
lub <=
.
Wyrażenia będą zawierały tylko dodawanie, odejmowanie, jednoargumentową negację ( -something
), gdzie występuje jedna +
lub -
przed każdą zmienną lub liczbą (z wyjątkiem pierwszej, która nie ma nic lub -
przed nią).
Liczby będą [0-9]+
, a zmienne będą [a-z]+
. Jeśli odpowiedź wymaga użycia |x|
(wartość bezwzględna x
), użyj abs()
funkcji. Możesz założyć, że wszystkie zmienne są liczbami całkowitymi, a wszystkie stałe liczbowe na wejściu wynoszą <1000.
Dane wyjściowe nie muszą być w najprostszej formie. Musi to być warunek taki jak powyżej, co oznacza, że są to tylko dwa wyrażenia, oddzielone jednym znakiem warunkowym, ale może również używać abs
funkcji, zawierającej prawidłowe wyrażenie, a następnie zachowuje się jak zmienna pod względem ważności.
Jeśli dane wejściowe nie zawierają danych wyjściowych dla żadnej wartości zmiennej, wypisz warunek, który zawsze jest fałszywy, ale nadal pod względem <3
.
Część wyzwania polega na zastanowieniu się, jak to zrobić, ale oto kroki, które należy wykonać w have != needed
powyższym:
have != needed
have - needed != 0
abs(have - needed) > 0
-abs(have - needed) < 0
3 - abs(have - needed) <3
Punktacja
To jest golf golfowy, więc wygrywa najkrótszy prawidłowy kod w bajtach.
Przypadki testowe
(Uwaga: te dane wyjściowe nie są jedynymi, ale starałem się je uprościć).
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
Odpowiedzi:
Siatkówka , 95 bajtów
Wypróbuj online!
Raczej naiwne rozwiązanie, ale nie udało mi się znaleźć żadnych ulepszeń.
To tylko seria zamienników:
Pozbyć się „lub równe” porównań zastępując
x <= y
zx < 1 + y
, ix >= y
zx > -1 + y
.Wymień
x == y
się==abs(x - y)
, ax != y
z!=abs(x - y)
.Wymień
==
się2+
i!=
z3-
, tak że całkowite zamienniki staćx == y
→2 + abs(x - y)
ix != y
→3 - abs(x - y)
.Normalizuj kierunek pozostałych nierówności, zastępując
x > y
jey < x
.Wymień
x < y
sięx - y + 3
.Dołącz serce na końcu sznurka.
źródło