Bạn cuối cùng có rất nhiều điều kiện rất dài, trông nhàm chán trong mã của bạn:
if flag == 1:
while have != needed:
if type == 7:
Chúng có thể được chuyển đổi thành các <3
đối tác có điều kiện đáng yêu hơn nhiều của họ:
if abs(flag - 1) + 2 <3:
while 3 - abs(have - needed) <3:
if 2 + abs(type - 7) <3:
Bài tập
Nhiệm vụ của bạn là lấy một điều kiện và làm cho nó về mặt <3
. Khoảng cách duy nhất quan trọng là không có giữa <
và 3
.
Conditionals sẽ có hai biểu thức tách bởi một trong hai ==
, !=
, >
, <
, >=
hoặc <=
.
Biểu thức sẽ chỉ chứa phép cộng, phép trừ, phủ định đơn ( -something
), trong đó có một +
hoặc -
trước mỗi biến hoặc số (ngoại trừ biến đầu tiên không có gì hoặc -
trước nó).
Số sẽ là [0-9]+
, và biến sẽ là [a-z]+
. Nếu câu trả lời cần sử dụng |x|
(Giá trị tuyệt đối của x
), hãy sử dụng abs()
hàm. Bạn có thể giả sử rằng tất cả các biến là số nguyên và tất cả các hằng số trong đầu vào là <1000.
Đầu ra không cần phải ở dạng đơn giản nhất. Nó không cần phải là một điều kiện như trên, nghĩa là nó chỉ có hai biểu thức, được phân tách bằng một dấu hiệu có điều kiện, nhưng nó cũng có thể sử dụng abs
hàm, kèm theo một biểu thức hợp lệ và sau đó nó hoạt động như một biến, về tính hợp lệ.
Nếu đầu vào không có đầu ra cho bất kỳ giá trị nào của biến, hãy xuất một điều kiện luôn luôn sai, nhưng vẫn còn về mặt <3
.
Một phần của thử thách là tìm ra cách thực hiện, nhưng đây là các bước cho phần have != needed
trên:
have != needed
have - needed != 0
abs(have - needed) > 0
-abs(have - needed) < 0
3 - abs(have - needed) <3
Chấm điểm
Đây là mã golf, vì vậy mã hợp lệ ngắn nhất, tính bằng byte, sẽ thắng.
Các trường hợp thử nghiệm
(Lưu ý, những đầu ra này không phải là đầu ra duy nhất, nhưng tôi đã cố gắng đơn giản hóa chúng.)
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