चुनौती:
वहाँ एक मूर्खतापूर्ण पहेली है जो सोशल नेटवर्क पर प्रसारित होती है:
8 + 2 = 16106
5 + 4 = 2091
9 + 6 = ?
एक फ़ंक्शन या ऑपरेटर को कार्यान्वित करें, जब दो सकारात्मक पूर्णांक संख्याएं x
और y
ऐसे दिए जाते हैं, तो x > y > 0
सही उत्तर को पूर्णांक के रूप में प्राप्त करते हैं , जहां उत्तर के अंकों के x * y
बाद के अंकों के x + y
बाद के अंक होते हैं x - y
। बहुत आसान।
नियम:
- मानक खामियों को अस्वीकार कर दिया जाता है।
- यह कोड-गोल्फ है इसलिए बाइट्स जीत में सबसे छोटा कोड है।
- इनपुट डेटा सत्यापन की आवश्यकता नहीं है। अमान्य इनपुट दिए जाने पर यह प्रोग्राम क्रैश हो सकता है या कचरा लौटा सकता है।
- आपको संख्यात्मक कार्यों और ऑपरेटरों (पूर्णांक और फ़्लोटिंग पॉइंट, गणित लाइब्रेरी फ़ंक्शंस, और अन्य फ़ंक्शन जो संख्याओं को स्वीकार और वापस करते हैं) सहित उपयोग करने की अनुमति है।
- यदि आप किसी ऐसे फ़ंक्शन का उपयोग करने की अनुमति देते हैं जो किसी संख्या के अंकों की संख्या लौटाता है, यदि लागू हो।
- आपको अपने कोड में कहीं भी स्ट्रिंग्स या किसी भी तरह के कॉन्टेनेट का उपयोग करने की अनुमति नहीं है ।
- परिणाम लौटाया जा सकता है या स्टैक पर धकेल दिया जा सकता है, जो भी भाषा में लागू होता है। परिणाम एक पूर्णांक संख्या होना चाहिए, न कि एक स्ट्रिंग।
नमूना कोड:
निम्न कोड नाम का एक डाइएडिक ऑपरेटर बनाता है X
।
एक्स ← {(⍺-⍵) + ((⍺ + ⍵) × 10 * 1 + ⌊10⍟⍺-⍵) + ⍺ × ⍵ × 10 * (2 + ⌊10⍟⍺ + ⍵) + ⌊10⍟⍺- ⍵}
स्पष्टीकरण:
एपीएल में, आप दाईं से बाईं ओर का मूल्यांकन करते हैं।
⍺ and ⍵
क्रमशः बाएं और दाएं ऑपरेंड हैं⌊10⍟⍺-⍵
पढ़ता है:floor of log10(⍺-⍵)
। पहले घटाव करता है फिर लघुगणक फिर तल। दांये से बांये तक। log10 के अंको को गिनने के लिए किया जाता है⍺-⍵
(आपको 1 बाद में योग करना चाहिए)।⍺×⍵×10*(...)
पढ़ता है:10 to the (...)th power, multiplied by ⍵, multiplied by ⍺
इसलिए,
⍺×⍵×10*(2+⌊10⍟⍺+⍵)+⌊10⍟⍺-⍵
वह उत्पाद है, जो योग के अंकों और अंतर के योग से बाईं ओर स्थानांतरित हो जाता है। 10 की शक्ति से गुणा करने पर एक पूर्णांक बाईं ओर स्थानांतरित हो जाएगा।((⍺+⍵)×10*1+⌊10⍟⍺-⍵)
वह अंतर है, जो अंतर के अंकों की संख्या से बाईं ओर स्थानांतरित होता है।(⍺-⍵)
अंतर है। यहां कोई शिफ्टिंग जरूरी नहीं है।X←{...}
आप एपीएल में एक ऑपरेटर को कैसे परिभाषित करते हैं।
उदाहरण:
8 X 2
16106
5 X 4
2091
9 X 6
54153
ग्नू डीसी:
निम्नलिखित कोड एक मैक्रो नाम बनाता है a
:
[sysx10lxly-dseZdsclxly+dsd+Z1+^lxly**10lc^ld*+le+]sa
स्पष्टीकरण:
sx
औरsy
स्टैक से एक तत्व पॉप करें और इसे क्रमशः रजिस्टरोंx
और पर सहेजेंy
।lx
औरly
रजिस्टरों से एक तत्व लोड करेंx
औरy
क्रमशः इसे स्टैक पर धकेलें।d
स्टैक में अंतिम तत्व को डुप्लिकेट करता है।^
दो संख्याओं की शक्ति की गणना करता है।Z
एक संख्या को पॉप करता है और अपने अंकों की संख्या लौटाता है। यह किया जाता है क्योंकिdc
कोई लघुगणक कार्य नहीं है।[...]sa
रजिस्टर में एक मैक्रो स्टोर करता हैa
।la
इसे लोड करता है।x
स्टैक के शीर्ष पर मैक्रो निष्पादित करता है।
उदाहरण:
8 2 laxn
16106
5 4 laxn
2091
9 6 laxn
54153