एपीएल, 36 34 39 36 33 29 27
*+/x={(∇⍣(⊃x>¯1↑⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
उत्पादन 1अगर कीथ, 0अन्यथा
GolfScript फिर से हमला !!
संपादित करें
+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
⊢/टेक माइनस 1 ( ) के बजाय राइट-रिडक्शन ( ) का उपयोग करते हुए ¯1↑, सीधे 1 char को सेव करना और अप्रत्यक्ष रूप से Disclose से 1 को सेव करना ⊃)
व्याख्या
⍎¨⍕x←⎕मूल्यांकित इनपुट लेता है (एक संख्या के रूप में माना जाता है) और इसे असाइन करता है x। इसे एक चरित्र सरणी (अन्य भाषाओं में उर्फ "स्ट्रिंग") में परिवर्तित करता है, और प्रत्येक वर्ण (अंक) के माध्यम से लूप, इसे एक संख्या में परिवर्तित करता है। तो यह अंकों के एक संख्यात्मक सरणी में परिणाम है।
{(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}मुख्य "लूप" फ़ंक्शन है: सरणी से
+/⍵↑⍨-⍴⍕xअंतिम ⍴⍕x(अंक का x) अंक लेता है और उन्हें रकम देता है।
⍵,इसे सरणी के अंत तक पहुंचाता है।
(x>⊢/⍵)जाँचें कि क्या सरणी पर अंतिम संख्या (जो +/⍵↑⍨-⍴⍕xअभी तक समाप्त नहीं हुई है) की तुलना में छोटा है xऔर कई बार नए सरणी पर इस फ़ंक्शन को देता है 1या 0
∇⍣निष्पादित करता है। इसलिए यदि अंतिम संख्या इससे छोटी है x, तो यह फ़ंक्शन पुनरावृत्ति करता है। अन्यथा बस नई सरणी लौटाएं
फ़ंक्शन निष्पादित करने के बाद, सरणी में सम बिंदु तक सममितियां होती हैं, जहां संख्याओं में से 2 इसके बराबर या उससे अधिक होती हैं x(जैसे 14उत्पन्न होगी 1 4 5 9 14 23, 13उत्पन्न होगी 1 3 4 7 11 18 29)
अंत में जांचें कि क्या प्रत्येक संख्या बराबर है xऔर परिणामी बाइनरी का योग आउटपुट है सरणी।
संपादित करें
1=+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
0यदि इनपुट एक-अंक का है, तो आउटपुट बनाने के लिए 2 चार्ट जोड़े :-(
फिर भी एक और संपादन
+/x=¯1↓{(∇⍣(x>⊢/⍵))1↓⍵,+/⍵}⍎¨⍕x←⎕
व्याख्या
फ़ंक्शन अब 1↓अंतिम ⍴⍕x( ↑⍨-⍴⍕x) को लेने के बजाय सरणी से पहला नंबर ( ) ड्रॉप करता है ।
हालाँकि, यह दृष्टिकोण 1=एकल अंकों की संख्या को संभालने के लिए पर्याप्त नहीं है। तो यह अब x1 चर को जोड़कर समानता की जाँच करने से पहले सरणी से अंतिम संख्या को गिराता है
आपने यह अनुमान लगाया: EDIT
+/x=1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
xपुराने अंतिम आइटम के बजाय नए जोड़े गए आइटम की तुलना में , इसलिए समानता को जांचने से पहले पहली (अंतिम) आइटम को गिराना xपर्याप्त है, एक ऋण चिह्न को बचाते हुए। पावर ऑपरेटर के दूसरे रूप का उपयोग करके एक और 3 बचाता है ( ⍣)
और 25-char gs उत्तर प्रकट होता है (Orz)
अंतिम संपादन
x∊1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
विश्वास नहीं कर सकता कि मैं चूक गया।
अब इसे गोल्फ नहीं कर सकते।