आप अपने कोड में बहुत लंबे, उबाऊ दिखने वाले सशर्त हैं:
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
।
सशर्त, दो से या तो अलग भाव हो जाएगा ==
, !=
, >
, <
, >=
या <=
।
अभिव्यक्तियों में केवल जोड़, घटाव, एकात्मक नकार ( -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