आज, हम सबसे कुशल बाइनरी फ़ंक्शन की गणना करेंगे। अधिक विशेष रूप से, हम उस फ़ंक्शन की गणना कर रहे हैं, जब फ़ंक्शन को निरंतर इनपुट 0 या अपने स्वयं के आउटपुट पर लागू करने से बनाया जाता है, जो छोटे पूर्णांकों पर उच्च प्राथमिकता रखते हुए, कम से कम संभव अभिव्यक्तियों के साथ सभी सकारात्मक पूर्णांक का प्रतिनिधित्व कर सकता है।
यह फ़ंक्शन निम्नानुसार बनाया गया है:
प्रत्येक पूर्णांक के लिए, 1 से शुरू हो रहा है और ऊपर की ओर जा रहा है, सबसे छोटी अभिव्यक्ति चुनें जिसे हमने अभी तक आउटपुट नहीं दिया है, और उस पूर्णांक को उस अभिव्यक्ति का आउटपुट बनाते हैं। अभिव्यक्ति की लंबाई में संबंध छोटे बाएं तर्क से, और फिर छोटे सही तर्क से टूट जाएगा। यहां देखिए यह कैसे काम करता है:
प्रारंभ में, 1 अप्रकाशित है। सबसे छोटा अप्रकाशित अभिव्यक्ति है
f(0, 0)
, इसलिए हम इसे 1 पर सेट करेंगे।अब, 2 अप्रकाशित है। सबसे छोटा असंसाधित भाव
f(f(0, 0), 0)
=f(1, 0)
औरf(0, f(0, 0))
= हैf(0, 1)
। छोटे बाएं तर्क की ओर संबंध टूट जाता है, इसलिएf(0, 1) = 2
।शेष सबसे छोटी असंबद्ध अभिव्यक्ति
f(f(0, 0), 0)
= हैf(1, 0)
, इसलिएf(1, 0) = 3
।अब, हम केवल 2
f
एस और 30
एस के साथ अभिव्यक्तियों से बाहर हैं , इसलिए हमें प्रत्येक में से एक को जोड़ना होगा। बाएं तर्क से संबंध तोड़ना, फिर सही तर्क, हम तबf(0, 2) = 4
से, प्राप्त करते हैंf(0, f(0, f(0, 0))) = f(0, f(0, 1)) = f(0, 2)
।जारी रखते हुए, हम हैं
f(0, 3) = 5
,f(1, 1) = 6
,f(2, 0) = 7
,f(3, 0) = 8
,f(0, 4) = 9
, ...
यहाँ एक तालिका है जिसे मैंने पहले कुछ मूल्यों के लिए भरा है:
0 1 2 3 4 5 6 7 8
/---------------------------
0| 1 2 4 5 9 10 11 12 13
1| 3 6 14 15 37 38 39 40 41
2| 7 16 42 43
3| 8 17 44 45
4| 18 46
5| 19 47
6| 20 48
7| 21 49
8| 22 50
इसे देखने का एक और तरीका यह है कि प्रत्येक आउटपुट का एक आकार होता है, इसके इनपुट के आकार के योग के बराबर। आउटपुट के बढ़ते आकार के क्रम में तालिका भरी जाती है, बाएं इनपुट और फिर सही इनपुट को छोटा करके संबंधों को तोड़ दिया जाता है।
आपकी चुनौती है, इस फ़ंक्शन के मूल्य को इनपुट, गणना और आउटपुट के रूप में दो गैर-नकारात्मक पूर्णांक दिए गए हैं। यह कोड गोल्फ है। सबसे छोटा समाधान, बाइट्स में, जीतता है। मानक खामियों पर रोक लगाई जाती है।
((0, (0, (0, 0))), 0)
लेक्सिकोग्राफ़िक रूप से छोटा है (((0, 0), 0), (0, 0))
, हालाँकि उत्तरार्द्ध में एक छोटा बाएं हाथ है।