इमोजीकोड 0.5, 204 201 बाइट्स
🐋🚂🍇🐖🅰️➡🚂🍇🍊⬅🐕1🍇🍎1🍉🍮s 0🔂k⏩0🐕🍇🍦t➖🐕k🍮r t🔂i⏩1 t🍇🍊😛🚮t i 0🍇🍮➕r i🍉🍉🍮➕s✖r🅰️k🍉🍎➗s🐕🍉🍉
इसे ऑनलाइन आज़माएं!
-3 बाइट्स "2 से कम" के बजाय "1 से कम या इसके बराबर" का उपयोग करके, क्योंकि "इमोजी" से कम में काफी लंबा UTF-8 एन्कोडिंग है। t
बाइट काउंट को प्रभावित किए बिना एक चेतावनी को चुप करने के लिए एक जमे हुए बनाया ।
🅰️ (पूर्णांक) वर्ग का विस्तार 🅰️ नामक विधि से करता है। आप एक साधारण प्रोग्राम लिख सकते हैं जो इनपुट से एक नंबर लेता है, नंबर पर program कॉल करता है और इस तरह से परिणाम प्रिंट करता है:
🏁🍇
🍦str🔷🔡😯🔤Please enter a number🔤
🍊🍦num🚂str 10🍇
😀🔡🅰️num 10
🍉🍓🍇
😀🔤Learn what a number is, you moron!🔤
🍉
🍉
इस हिस्से को संदेशों और त्रुटि से निपटने में चूक कर बहुत कुछ हासिल किया जा सकता है, लेकिन यह स्कोर में शामिल नहीं है, इसलिए मैं रास्ते में पठनीयता में सुधार करते हुए इमोजीकोड की अधिक विशेषताओं को दिखाना पसंद करता हूं।
Ungolfed
🐋🚂🍇
🐖🅰️➡🚂🍇
🍊◀️🐕2🍇
🍎1
🍉
🍮sum 0
🔂k⏩0🐕🍇
🍦nmk➖🐕k
🍮sig nmk
🔂i⏩1 nmk🍇
🍊😛🚮nmk i 0🍇
🍮➕sig i
🍉
🍉
🍮➕sum✖sig🅰️k
🍉
🍎➗sum🐕
🍉
🍉
व्याख्या
नोट: इमोजी पसंद का बहुत कुछ इमोजीकोड 0.5 में ज्यादा मायने नहीं रखता है। यह 0.x है, सब के बाद। 0.6 इसे ठीक कर देगा।
इमोजीकोड एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज है जिसमें जेनरिक, प्रोटोकॉल, ऑप्शंस और क्लोजर शामिल हैं, लेकिन यह प्रोग्राम बिना क्लोजर का उपयोग करता है और सभी जेनरिक और प्रोटोकॉल को अंतर्निहित माना जा सकता है, जबकि I / O स्टब में एकमात्र वैकल्पिक दिखाई देता है।
कार्यक्रम केवल कुछ प्रकारों पर संचालित होता है: ger पूर्णांक प्रकार है, type स्ट्रिंग प्रकार है और a श्रेणी प्रकार है। कुछ बूलियन (👌) भी दिखाई देते हैं, लेकिन उनका उपयोग केवल स्थितियों में किया जाता है। बूलियन क्रमशः 👍 या a का मान ले सकते हैं, जो क्रमशः सही और गलत के अनुरूप हैं।
वर्तमान में Emojicode में कोई ऑपरेटर नहीं हैं, इसलिए इसके अलावा, संकलन और अन्य संचालन जो सामान्य रूप से ऑपरेटर हैं, कार्यों के रूप में कार्यान्वित किए जाते हैं, प्रभावी ढंग से अभिव्यक्तियों को उपसर्ग संकेतन का उपयोग करते हैं । ऑपरेटरों को भी 0.6 में योजना बनाई गई है।
आइए पहले परीक्षण कार्यक्रम से निपटें।
🏁
यह 🏁 ब्लॉक है, जिसकी तुलना अन्य भाषाओं से मुख्य से की जा सकती है।
🍇 ... 🍉
अंगूर और तरबूज इमोजीकोड में कोड ब्लॉक घोषित करते हैं।
🍦str🔷🔡😯🔤Please enter a number🔤
यह एक "जमे हुए" नाम की घोषणा करता है str
और इनिशियलाइज़र (कंस्ट्रक्टर) initial का उपयोग करके बनाए गए एक नए स्ट्रिंग के लिए इसका मूल्य निर्धारित करता है, जो एक स्ट्रिंग के रूप में संकेत देता है और फिर उपयोगकर्ता से एक लाइन इनपुट करता है। एक चर के बजाय एक जमे हुए का उपयोग क्यों करें? यह नहीं बदलेगा, इसलिए एक चर चेतावनी का उत्सर्जन करेगा।
🍊🍦num🚂str 10
चलो इसे तोड़ दो। तर्क के साथ जमे हुए 🚂str 10
पर str
By विधि को कॉल करता है। 10. सम्मेलन द्वारा, एक प्रकार के नाम के साथ विधियों को ऑब्जेक्ट को उस प्रकार में परिवर्तित किया जाता है। 10 पूर्णांक रूपांतरण के लिए उपयोग करने के लिए आधार है। इस विधि एक वैकल्पिक देता है, 🍬🚂
। वैकल्पिक में आधार प्रकार या शून्य का मान हो सकता है, a। जब स्ट्रिंग में कोई संख्या नहीं होती है, तो a लौटा दिया जाता है। मान का उपयोग करने के लिए, किसी को 🍺 का उपयोग करके वैकल्पिक को खोलना है, जो मान होने पर रनटाइम त्रुटि उठाता है। इसलिए, अल्टरनेटिव होने से पहले कुछ भी नहीं देखने के लिए यह अच्छा अभ्यास है। यह बहुत आम है, वास्तव में, कि Emojicode के लिए एक आशुलिपि है। आम तौर पर, 🍊
एक "अगर" है।🍊🍦 variable expression
का अर्थ है: अभिव्यक्ति का मूल्यांकन करें। यदि वैकल्पिक में कुछ भी नहीं है, तो स्थिति false (गलत) का मूल्यांकन करती है। अन्यथा, एक जमे हुए नाम गयाvariable
वैकल्पिक के अपरिवर्तित मूल्य के साथ बनाया गया है, और स्थिति (, (सत्य) का मूल्यांकन करती है। इसलिए, सामान्य उपयोग में, 🍇 ... 🍉
सशर्त का पालन करने वाले ब्लॉक में प्रवेश किया जाता है।
😀🔡🅰️num 10
Adds वह विधि है जिसमें मुख्य कोड 🐋 का उपयोग करके the को जोड़ा जाता है जो विभाजन की संख्या की गणना करता है। यह num
सशर्त में घोषित फ्रोजन पर the कॉल करता है और परिणाम को 🅰️ विधि द्वारा बेस 10 का उपयोग करके स्ट्रिंग में परिवर्तित करता है। फिर, ts परिणाम प्रिंट करता है।
🍓🍇 ... 🍉
🍓 का अर्थ "और" है, इसलिए जब उपयोगकर्ता किसी संख्या को सही ढंग से दर्ज नहीं करता है तो यह ब्लॉक दर्ज किया जाता है।
😀🔤Learn what a number is, you moron!🔤
स्ट्रिंग शाब्दिक प्रिंट।
अब, मुख्य कार्यक्रम को देखें। मैं ungolfed संस्करण की व्याख्या करूँगा; गोल्फ संस्करण सिर्फ व्हाट्सएप हटा दिया गया था और चर एकल अक्षर नामों में बदल दिया गया था।
🐋🚂🍇 ... 🍉
End वर्ग बढ़ाएँ। यह एक ऐसी विशेषता है जो आमतौर पर प्रोग्रामिंग भाषाओं में नहीं पाई जाती है। सुपरक्लास के रूप में 🚂 के साथ एक नया वर्ग बनाने के बजाय, ifies सीधे class को संशोधित करता है।
🐖🅰️➡🚂🍇 ... 🍉
Es नामक एक नई विधि बनाता है जो named लौटाता है। यह सूत्र का उपयोग करके गणना किए गए विभाजन की संख्या देता हैa(n) = (1/n) * Sum_{k=0..n-1} sigma(n-k)*a(k)
🍊⬅🐕1🍇
🍎1
🍉
Languages अन्य भाषाओं से this
या के समान है self
और उस ऑब्जेक्ट को संदर्भित करता है जिस पर विधि को बुलाया गया था। यह कार्यान्वयन पुनरावर्ती है, इसलिए यह समाप्ति की स्थिति है: यदि संख्या जिस पद्धति पर कॉल की गई थी वह 1 से कम या बराबर है, वापसी 1।
🍮sum 0
एक नया चर बनाएं sum
और इसे 0 पर सेट करें।
🔂k⏩0🐕
That किसी भी चीज़ पर निर्भर करता है जो 🔂 प्रोटोकॉल को लागू करता है, जबकि a एक श्रेणी शाब्दिक है जो 🔂🐚🚂 को लागू करने के लिए होता है। एक श्रेणी में एक स्टार्ट वैल्यू, एक स्टॉप वैल्यू और एक स्टेप वैल्यू है, जिसे 1 मान लिया गया है start < stop
, या -1 अन्यथा। श्रेणी शाब्दिक बनाने के लिए also का उपयोग करके चरण मान भी निर्दिष्ट कर सकते हैं। स्टार्ट वैल्यू समावेशी है, जबकि स्टॉप वैल्यू अनन्य है, इसलिए यह सूत्र में for k in range(n)
या इसके बराबर Sum_{k=0..n-1}
है।
🍦nmk➖🐕k
हमें सिग्मा (n - k), या n - k
दूसरे शब्दों में विभाजकों के योग की गणना करने की आवश्यकता है , और तर्क को कुछ समय की आवश्यकता है, इसलिए यह कुछ बाइट्स को बचाने के n - k
लिए चर में संग्रहीत करता है nmk
।
🍮sig nmk
🔂i⏩1 nmk
यह sig
चर को सिग्मा के तर्क पर सेट करता है और 1 से लेकर सभी संख्याओं पर पुनरावृत्त करता है nmk - 1
। मैं वेरिएबल को 0 से इनिशियलाइज़ कर सकता था और 1..kk से अधिक का इतरेट कर सकता था लेकिन इसे इस तरह से करना कम है।
🍊😛🚮nmk i 0
🚮 शेष, या मापांक की गणना करता है और, समानता के लिए जाँच करता है, इसलिए स्थिति 👍 होगी यदि i
का एक विभक्त है nmk
।
🍮➕sig i
यह कॉल के द्वारा एक असाइनमेंट है, += -= >>=
कुछ अवर, इमोजी-मुक्त भाषाओं में ऑपरेटर परिवार के समान । इस लाइन को भी लिखा जा सकता है 🍮 sig ➕ sig i
। इसलिए, आंतरिक लूप के खत्म होने के बाद , या sig
के विभाजकों का योग होगाn - k
sigma(n - k)
🍮➕sum✖sig🅰️k
कॉल द्वारा एक और असाइनमेंट, तो यह sigma(n - k) * A(k)
कुल में जोड़ता है, जैसे कि सूत्र में।
🍎➗sum🐕
अंत में, योग को n से विभाजित किया जाता है और भागफल लौटाया जाता है। यह स्पष्टीकरण शायद तीन बार ही लिया गया था जितना कोड लिखने में ...