У вас в коді багато дуже довгих, нудних на вигляд умов:
if flag == 1:
while have != needed:
if type == 7:
Вони можуть бути перетворені на їх набагато приємніші <3аналоги умов:
if abs(flag - 1) + 2 <3:
while 3 - abs(have - needed) <3:
if 2 + abs(type - 7) <3:
Завдання
Ваше завдання - взяти умовне і зробити його з точки зору <3. Важливий лише інтервал - це те, що між <та між ними немає 3.
Conditionals буде два вирази розділеним або ==, !=, >, <, >=або <=.
Вирази містять лише додавання, віднімання, одинарне заперечення ( -something), де є одна +або -перед кожною змінною чи цифрою (крім першої, яка не має нічого або -перед цим).
Числа будуть [0-9]+, і змінні будуть [a-z]+. Якщо відповідь потрібно використовувати |x|(Абсолютне значення x), скористайтеся abs()функцією. Можна припустити, що всі змінні є цілими числами, а всі константи числа у вхідному значенні <1000.
Вихід не повинен бути у найпростішому вигляді. Це дійсно має бути умовно, як вище, це означає, що це лише два вирази, відокремлені одним умовним знаком, але він також може використовувати absфункцію, додаючи дійсне вираження, і тоді він діє як змінна, з точки зору дійсності.
Якщо вхід не має виводу для будь-якого значення змінної, виведіть умову, яка завжди помилкова, але все ж з точки зору <3.
Частина виклику полягає в тому, щоб з'ясувати, як це зробити, але ось кроки для have != neededвищезазначеного:
have != needed
have - needed != 0
abs(have - needed) > 0
-abs(have - needed) < 0
3 - abs(have - needed) <3
Оцінка балів
Це код-гольф, тому найкоротший дійсний код у байтах виграє.
Тестові справи
(Зауважте, ці результати не є єдиними виходами, але я намагався їх спростити.)
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