पायथन 2 , 38 30 28 बाइट्स
lambda S:`6793**164`[len(S)]
इसे ऑनलाइन आज़माएं!
दुर्भाग्य से अभी भी अभी तक सबसे अच्छा पायथन 2 उत्तर की तुलना में एक बाइट लंबा है; हालांकि, enklact
-approach का उपयोग नहीं कर रहा है ।
अब मैं एक बाइट से भी छोटा हूँ, जो मेरे हर सवाल का जवाब देता है !
यह कैसे काम करता है?
बहुत सारी क्रूरता के बाद, मुझे एक अभिव्यक्ति मिली, जिसके परिणामस्वरूप एक संख्या है, जिसमें सिर्फ सही अंक हैं।
मैंने देखा कि दिए गए स्ट्रिंग की लंबाई के केवल एक विशिष्ट अंक को देखकर 3 बाइट्स ( %10
) की आवश्यकता है । इसलिए मैंने नंबर के लिए एक और पायथन प्रोग्राम ( पास्टिबिन लिंक ) लिखा, जो उन नंबरों की खोज करता है जो सप्ताह के दिन तक इनपुट स्ट्रिंग्स की लंबाई को सीधे मैप करते हैं।
जादू की संख्या इस तरह दिखती है: 6793**164 = 28714733692312345620167113260575862840674216760386883406587492336415023761043044176257567032312859371641211117824224067391750766520256112063756278010050204239810862527958109285342869876264808102743173594017101607983288521836082497514383184553444755034407847810524083812459571382103831904835921560285915349760536969265992879312869538914200854305957428078269094250817029486005437991820466986793657301214564264748923199288698278615871481529585816783654841131577178922192383679718074693535597651237893794976519274268917335387876260270630339777501802739852278932279775510324916969726203688466311848240746465178859847331248655567344801
(प्रभावशाली 629 दशमलव अंकों वाली संख्या)
और जैसा कि आप देख सकते हैं, संख्या [२ 20, २०, १३, ११, ४, १६, १,] से [०, १, २, ३, ४, ५, ६] तक आवश्यक मानचित्रण प्रदान करती है (पायथन तार ० हैं अनुक्रमित):
2871 4 733692 3 1 2 34 5 6 20 1 6711326 0 5758628406742167603868834...
[4]^ [11]^ [13]^ [16]^ ^[17] ^[20] ^[28]
मेरे कार्यक्रम भी अन्य भाव जो आवश्यक संपत्ति के साथ संख्या उपज है, हालांकि वे और अधिक (28 से 29 के बजाय) का प्रतिनिधित्व करने के बाइट्स ले पाया: 19439**540
, 34052**726
, 39311**604
, 44873**182
, 67930**164
और 78579**469
। (वे सभी लिंक्ड प्रोग्राम द्वारा पाए गए एक्सप्रेशन हैं; इसके निष्पादन में कई घंटे लग गए।)
वैकल्पिक फ़ंक्शन जिसे 28 बाइट्स की आवश्यकता होती है: lambda S:`7954<<850`[len(S)]
वैकल्पिक फ़ंक्शन जिसे 29 बाइट्स की आवश्यकता होती है: lambda S:`9699<<2291`[len(S)]
वैकल्पिक फ़ंक्शन जिसे 30 बाइट्स की आवश्यकता होती है: lambda S:`853<<4390`[len(S)+9]
वैकल्पिक फ़ंक्शन जिन्हें 31 बाइट्स की आवश्यकता होती है:lambda S:`1052<<3330`[len(S)+8]
यह कैसे काम करता है? मैंने वह नंबर कैसे उत्पन्न किया? (30 बाइट उत्तर)
30 बाइट का जवाब था lambda S:`3879**41`[len(S)%10]
।
इनपुट स्ट्रिंग की लंबाई को देखते हुए [28, 20, 13, 11, 4, 16, 17]
, मैंने देखा कि बेस दस में सभी अंतिम अंक अलग-अलग हैं, जिसके परिणामस्वरूप सूची में है [8, 0, 3, 1, 4, 6, 7]
। इसलिए मुझे केवल उस सूची से सप्ताह के सभी सात दिनों की सूची में मैपिंग की आवश्यकता थी [0, 1, 2, 3, 4, 5, 6]
।
मेरा पहला दृष्टिकोण बस मैपिंग करने के लिए एक स्ट्रिंग का उपयोग करता है: lambda S:"13*24*560"[len(S)%10]
हालांकि स्ट्रिंग को ग्यारह बाइट्स ( "13*24*560"
) की आवश्यकता होती है ।
इसलिए मैंने अंकगणितीय अभिव्यक्तियों का परीक्षण करने के लिए एक पायथन प्रोग्राम ( पास्टिबिन लिंक ) लिखा, जिसके परिणामस्वरूप मिलान अंक के साथ पूर्णांक होता है, जिससे इस कार्यक्रम को आगे बढ़ाने की उम्मीद होती है। मैं इस प्रकार बहुत दूर आया `3879**41`
(केवल दस बाइट्स, मेरे कार्यक्रम का एकमात्र और सबसे छोटा अभिव्यक्ति है)।
बेशक, कई अलग-अलग संभावित अभिव्यक्तियां हैं जो एक कोशिश कर सकते हैं; मैं बस भाग्यशाली हो गया कि a**b
एक बहुत छोटे परिणाम के रूप में एक था जो मेरी ज़रूरत के अनुसार फिट था।
बस, किसी को भी उत्सुक के लिए 3879**41 = 1372495608710279938309112732193682350992788476725725221643007306215781514348937145528919415861895033279220952836384201346579163035594383625990271079 = 1.372... * 10**147
।
एक अन्य मान्य फ़ंक्शन जो मैंने वैकल्पिक अभिव्यक्तियों की खोज के दौरान पाया, जिसके लिए दुर्भाग्य से 32 बाइट्स की आवश्यकता होती है: lambda S:`7**416`[len(S)%10+290]