यदि आपने कार्ल सगन द्वारा पुस्तक संपर्क पढ़ा है , तो यह चुनौती आपको परिचित हो सकती है।
एक संख्या, एक अज्ञात ऑपरेटर, एक अन्य संख्या, और एक परिणाम से मिलकर गणितीय समीकरणों के एक सेट के इनपुट को देखते हुए, घटाएं कि कौन से ऑपरेटर इसके अलावा, घटाव, गुणन या विभाजन का प्रतिनिधित्व करते हैं।
प्रत्येक इनपुट समीकरण हमेशा शामिल होगा
- एक गैर-नकारात्मक पूर्णांक
- पत्र में से एक
A
,B
,C
, याD
- एक और गैर-नकारात्मक पूर्णांक
- चरित्र
=
- एक अंतिम गैर-नकारात्मक पूर्णांक
एक साथ मिला हुआ। उदाहरण के लिए, एक संभावित इनपुट है 1A2=3
, जिसमें से आप कटौती कर सकते हैं जो A
इसके अलावा का प्रतिनिधित्व करता है। पूर्णांकों में से प्रत्येक संतुष्ट करेगा 0 ≤ x ≤ 1,000
।
हालाँकि, यह हमेशा की तरह सरल नहीं है। वहाँ के बीच अस्पष्टता संभव है:
5A0=5
इसके अलावा / घटाव1A1=1
: गुणा / भाग0A5=0
: गुणा / भाग2A2=4
इसके अलावा / गुणन4A2=2
: घटाव / विभाजन0A0=0
इसके अलावा / घटाव / गुणा
और इसी तरह। चुनौती इस क्षमता का उपयोग करने के लिए है कि विकल्पों को कम करने के लिए, उन्मूलन की प्रक्रिया के साथ संयुक्त, यह पता लगाने के लिए कि प्रत्येक अक्षर किस ऑपरेटर का प्रतिनिधित्व करता है। (हमेशा कम से कम एक इनपुट समीकरण होगा, और यह हमेशा एकल ऑपरेटर के साथ इनपुट में उपयोग किए जाने वाले प्रत्येक अक्षर को स्पष्ट रूप से मेल खाने के लिए संभव होगा।)
उदाहरण के लिए, मान लें कि इनपुट निम्नलिखित समीकरण हैं:
0A0=0
: यह नीचे, जोड़, घटाव या गुणा (नीचे 0 से भाग नहीं कर सकता) के लिए A को कम करता है।10B0=10
: B को जोड़ या घटाव होना चाहिए।5C5=10
: C स्पष्ट रूप से जोड़ है, जो B घटाव बनाता है, जो A गुणन करता है।
इसलिए, इन इनपुट समीकरणों के लिए उत्पादन से मेल खाना चाहिए A
साथ *
, B
साथ -
, और C
साथ +
।
इनपुट एक एकल व्हाट्सएप- / अल्पविराम-सीमांकित स्ट्रिंग या तार की एक सरणी के रूप में दिया जा सकता है, प्रत्येक एक समीकरण का प्रतिनिधित्व करता है। आउटपुट या तो एक स्ट्रिंग ( "A*B-C+"
), एक सरणी ( ["A*", "B-", "C+"]
), या एक शब्दकोश / तानाशाह की तरह 2 डी सरणी ( {"A": "*", ...}
या [["A", "*"], ...]
) हो सकता है।
आप मान सकते हैं कि एक संख्या को किसी अन्य संख्या से विभाजित नहीं किया जाएगा जिसे यह विभाज्य नहीं है (इसलिए, आपको इस बारे में चिंता करने की आवश्यकता नहीं है कि क्या विभाजन फ़्लोटिंग पॉइंट होना चाहिए या काट दिया जाना चाहिए)।
चूंकि यह कोड-गोल्फ है , बाइट्स में सबसे छोटा कोड जीतता है।
परीक्षण के मामलों:
In Out
-------------------------------
0A0=0 10B0=10 5C5=10 A*B-C+
100D100=10000 D*
4A2=2 4B2=2 0A0=0 A-B/
15A0=15 4B2=2 2C2=0 A+B/C-
1A1=1 0A0=0 A*
0A0=0 2A2=4 5B0=5 2B2=4 A*B+
2A2=4 0C0=0 5B0=5 5A0=5 A+B-C*
0A1000=0 4A2=2 A/