D,g,@@#,BFB
D,k,@,¦+AbL/
D,f,@,dbLR$€g€k0b]$+ABcB]£>ª!
इसे ऑनलाइन आज़माएं!
अपरंपरागत संस्करण, 30 बाइट्स
D,f,@,¬+AbLRBcB/@0@B]ABcB]£>ª!
इसे ऑनलाइन आज़माएं!
दोनों गोल्फ एरे और 0 के लिए आउटपुट 1 अन्यथा
वे कैसे काम करते हैं
पहला संस्करण मेरे द्वारा बनाया गया था, बिना किसी अन्य समाधान की जाँच के। दूसरा डेनिस की टिप्पणी से प्रेरित था , इसलिए मैं इससे कम खुश हूं।
पहला संस्करण
यहाँ, हम अपने मुख्य कार्य को परिभाषित करते हैं चयह हमारे इनपुट ऐरे की गुरुता की गणना करता है ,ए। सबसे पहले, हमें प्रत्यय की उपज चाहिएए, जो पहले रेंज को जेनरेट करके किया जाता है बी : = [ 1 , । । । | ए | ], कहाँ पे | ए | की लंबाई दर्शाता है ए। यह कोड के साथ किया जाता है dbLR$
, जो छोड़ देता है[ बी , ए ]ढेर के रूप में। हम फिर डाइएडिक फ़ंक्शन को पुन: व्यवस्थित करते हैंजीइन दो सूचियों पर। रंगादिक होने के नाते, फ़ंक्शन इसके बाएं तर्क को बांधता हैएप्रत्येक पुनरावृत्त तत्व के लिए। यह फिर सीमा पर पुनरावृत्त करता हैबी, जिसमें से प्रत्येक तत्व बी प्रदान किया जा रहा सही तर्क जी। जी की तरह परिभाषित किया गया है
D,g,@@#,BFB
जो एक डाइएडिक फ़ंक्शन है (यानी लेता है 2तर्क), और #
निष्पादन से पहले उल्टे क्रम ( ) में स्टैक के लिए अपने तर्कों को आगे बढ़ाता है । BF
फिर दो तर्कों को समतल करता है। हम मान लेंगे कि तर्क हैंए तथा ई ∈ एक्स। यह ढेर को छोड़ देता है[ । । । ए , ई ], कहाँ पे । । ।एक सरणी स्प्लिट का प्रतिनिधित्व करता है । अंत में, B
पहली बार लेता हैइ के तत्व ए और उन तत्वों से युक्त एक सूची देता है।
नोट : फ़ंक्शन नामजी तथा कयादृच्छिक रूप से नहीं चुना जाता है। यदि किसी ऑपरेटर को दी गई कमांड (जैसे €
) में वर्तमान में कोई फ़ंक्शन नहीं है (जो है g
और k
नहीं ), तो नामित फ़ंक्शन को मिलान फ़ंक्शन के लिए खोजा जाता है। यह बचाता है2बाइट्स, आम तौर पर फ़ंक्शन को {...}
उपयोगकर्ता-परिभाषित फ़ंक्शन के रूप में पहचाने जाने के लिए लपेटना होगा । लेखन के समय, वर्तमान में अप्रयुक्त एकल बाइट आदेशों हैं I
, K
, U
, Y
, Z
, g
, k
, l
, u
औरw
।
कब जी एक सीमा के तत्वों पर लागू किया जाता है एक्स, इसके लिए उपसर्गों की सूची देता है ए। फिर हम अपने दूसरे हेल्पर फंक्शन को मैप करते हैंक इनमें से प्रत्येक उपसर्ग पर। क की तरह परिभाषित किया गया है
D,k,@,¦+AbL/
जो अंकगणितीय माध्य का मानक कार्यान्वयन है । ¦+
तर्क की राशि की गणना करता है, AbL
इसकी लंबाई की गणना /
करता है , फिर लंबाई से योग को विभाजित करता है। यह प्रत्येक उपसर्ग के अंकगणितीय माध्य की गणना करता है, एक नया सरणी देता है,सी।
दुर्भाग्य से, सी का मतलब होता है ए इसके अंतिम तत्व के रूप में, और खाली सूची का मतलब शामिल नहीं है, 0। इसलिए, हमें अंतिम तत्व को निकालना होगा, और प्रिपेंड करना होगा0, लेकिन पॉपिंग को छोड़ दिया जा सकता है, दो बाइट्स बचाते हुए, एक दूसरे में बताए गए कारणों के लिए। इसके बजाय, हम धक्का देते हैं[ ० ] नीचे सीसाथ 0b]$
, फिर जोड़ दो सरणियों एक नई सरणी बनाने,सी+।
अब, हमें प्रत्येक तत्व को उसके संबंधित तत्व से कम होने के रूप में जांचना होगा ए। हम धक्का देते हैंएएक बार फिर से और दो सरणियों को एक साथ जिप करें ABcB]
। यही कारण है कि हमें अंतिम तत्व को पॉप करने की आवश्यकता नहीं है: Bc
पायथन के zip
फ़ंक्शन के साथ कार्यान्वित किया जाता है , जो सबसे छोटी सरणी की लंबाई को फिट करने के लिए लंबी सरणियों को काटता है। यहाँ, यह अंतिम तत्व को हटा देता हैसी+ जोड़े बनाते समय।
अंत में, हम starmap पी ∈ ए , क्ष∈ सी+; p < q≡ ¬ ( पी ≥ क्ष) प्रत्येक जोड़ी पर पी , क्यू सभी की एक सरणी प्राप्त करने के लिए 0अगर सरणी गोल्फ है, और सरणी कम से कम एक है 1यदि अन्यथा। हम फिर जाँचते हैं कि सभी तत्व गलत हैं अर्थात समान हैं0 साथ में ª!
उस मान के और वापस लौटें।
दूसरा संस्करण
इसे हटाने के लिए डेनिस के दृष्टिकोण का लाभ लेता है 24बाइट्स, सहायक कार्यों को समाप्त करके। के हमारे इनपुट सरणी को देखते हुएए, हम पहली बार संचयी योगों की गणना करते हैं ¬+
, अर्थात से बनाई गई सरणी[ ए0, ए0+ ए1, ए0+ ए1+ ए2, । । । , ए0+ । । । + एमैं]। फिर हम रेंज की गणना करके जेली के बराबर J
( संकेत ) उत्पन्न करते हैंबी : = [ १ । । । | ए | ] कहाँ पे | ए | एक बार फिर से सरणी की लंबाई का मतलब है।
इसके बाद, हम प्रत्येक तत्व को विभाजित करते हैं ए में इसी सूचकांक द्वारा बीसाथ BcB/
और prepend0के साथ @0@B]
। यह एक नई सरणी में परिणाम करता है,सी+, के रूप में परिभाषित किया गया है
सी+: = [ ० , ए0, ए0+ ए12, ए0+ ए1+ ए23, । । । , ए0+ । । । + एमैंमैं + 1]
अंतिम भाग पहले संस्करण के समान है: हम पुश और ज़िप करते हैं ए साथ में सी+, फिर प्रत्येक जोड़ी पर असमानता को जोर देकर कहें कि परिणामी सरणी में सभी तत्व मिथ्या थे।