अनाम उपसर्ग लंबोदर। एक कार्यक्रम निकाय देता है।
{
1=≢⍵:⍕⍵ ⍝ single element
(2=≢⍵)∧(⍵[2]=11×⍵[1]):⍕⍵[1] ⍝ 2, 22 etc.
1=≢∪⍵:'⊢',⍕⊃⍵ ⍝ all the same
(⊢≡⊃×⍳∘≢)⍵:'+',⍕⊃⍵ ⍝ linear
((⌊=⊢)!⍣¯1⊢⊃⍵)∧(1∧.=1↓⍵):'!',⍕!⍣¯1⊃⍵ ⍝ factorial followed by all 1s
(⍵[2]∧.=1↓⍵)∧(⍵[1]=10|2⊃⍵):(⍕⊃⍵),'⌈',(⊃⍕2⊃⍵) ⍝ b ab ab ab
e←{∊⍉2 2⍴'+×',⍕¨⍵}¨⍸(⊃⍵)=∘.×⍨⍳10
b←⍵∘≡¨e(({0::⍬ ⋄ ⍎⍵}¨,\)⍴∘⊂)¨⍨(≢⍵)
∨/b:⊃b/e
Q←{'''',⍨⍵/⍨1+''''=⍵}
(5∧.≤⍵)∧(≢⍕⍵)>6+(+/14=⍵)+≢⍵:'{⍺←⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[⍵] ⍝ string fallback
(≢⍕⍵)>9+(+/5=⍵)+≢⍵:'{⍺←¯4+⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[4+⍵] ⍝ offset string fallback
'{⍺←⊃⋄1⌽⍺⊢⍵}',⍕⍵ ⍝ fallback
}
इसे ऑनलाइन आज़माएं!
तरीके
यह विभिन्न तरीकों की पड़ताल करता है और पहले प्रयोग करने योग्य वापसी करता है, अंततः एक सार्वभौमिक रूप से लागू विधि पर वापस लौटता है।
एकल तत्व
यदि सूची में केवल एक तत्व है, तो इसे-के रूप में वापस किया जाता है।
2, 22 आदि।
एक अंक को केवल 11 बार बड़ा करने के लिए दोहराया जा सकता है,
सब एक जैसे
हम सिर्फ सबसे सही ( ⊢
) नंबर लौटाते हैं ।
रैखिक
f (n) = k × n क्रम केवल पहले शब्द से पहले एक प्लस सम्मिलित करते हैं।
सभी 1s के बाद फैक्टरियल
जब पहली संख्या n =! M और बाद की संख्या 1 होती है, तो !m
एक समाधान है क्योंकि !m
n है और m!m
1 है और !1
1 है।
b ऐब एब
चूंकि सभी दो-अंकीय संख्या सभी एकल-अंकीय संख्याओं से बड़ी हैं, एक अधिकतम चल रही है, जहां पहले नंबर के सामने दूसरे नंबर के पीछे से चिपके हुए हैं, एक समाधान है।
तीन-लाइन-कोड
जांचें कि क्या प्रकार +a×b
का कोई सूत्र मान्य है।
गिरती हुई पीठ
5 (क्योंकि 4 लाइन ब्रेक है) के तहत बिना संख्या वाले लंबे अनुक्रम को SBCS के पात्रों के रूप में एन्कोड किया जा सकता है।
ऑफ़सेट स्ट्रिंग फ़ॉलबैक
यदि संख्या 5 से कम है, तो हम उन से बचने के लिए 9 से ऊपर जाते हैं।
मैदान छोड़ना
स्ट्रिंग "{⍺←⊃⋄1⌽⍺⊢⍵}"
और सरल ( ⍕
) इनपुट का सरल स्ट्रिंग संयोजन । जैसे [3,1,4]
प्रोग्राम बॉडी को वापस करता है {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
।
ब्रेसिज़ में हिस्सा एक महत्वाकांक्षी फ़ंक्शन है जिसका अर्थ है कि यह एक उपसर्ग फ़ंक्शन या एक इन्फिक्स फ़ंक्शन हो सकता है। इस प्रकार इसका सबसे ऊपरी उदाहरण उपसर्ग मोड में और अन्य सभी इन्फिक्स मोड में चलेगा। मोड के बीच अंतर यह है कि क्या ⍺
, बाएं तर्क को दर्शाता है, एक मूल्य है। यदि ऐसा नहीं होता है तो इसे फंक्शन ⊃
(पहले) सौंपा जाएगा ।
फॉलबैक विधि की व्याख्या
{
… }
अनाम लंबोदर:
⍺←⊃
यदि कोई वाम तर्क नहीं है ( ⍺
) फ़ंक्शन ⊃
(पहले) को असाइन करें⍺
⋄
फिर:
इस बिंदु पर, निम्न कोड का मतलब दो अलग-अलग चीजों पर निर्भर करता है कि क्या ⍺
संख्याओं की सूची (इन्फिक्स कॉल) या फ़ंक्शन "पहले" (उपसर्ग कॉल) है।
यदि ⍺
संख्याओं की सूची है:
⍺⊢⍵
बाएँ तर्क को सही तर्क के पक्ष में छोड़ें
1⌽
एक कदम छोड़ दो
यदि ⍺
फ़ंक्शन "पहले" है:
⊢⍵
सही तर्क उपजें
⍺
उस का पहला तत्व उठाओ
1⌽
इसे एक बार घुमाएं (एक स्केलर पर नो-ऑप)
कमबैक विधि का उदाहरण रन
निष्पादित 3 1 4
कोड, {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
"पहला" फ़ंक्शन असाइन करता है ⍺
और इस प्रकार पहला तत्व देता है; 3
।
निष्पादन {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
को सही लेम्ब्डा 3 1 4
को बाएं तर्क के रूप में "कैप्चर" करने की अनुमति देता है, इसलिए ⍺
इसका एक मूल्य है जिसे इसके पक्ष में 3 1 4
छोड़ दिया जाता है और फिर एक कदम छोड़ दिया जाता है और 1 4 3
परिणाम के रूप में पैदावार होती है । इसके बाद इसे लेम्बेस्ट लेम्बडा के एकमात्र तर्क के रूप में उपयोग किया ⍺
जाता है , जहां "पहला" फ़ंक्शन बन जाता है, जिसके परिणामस्वरूप पहला तत्व होता है; 1
।
निष्पादन {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
को सबसे दाहिने लंबोदा को " 3 1 4
बाएं " के रूप में मध्य में "कैप्चर" करने की अनुमति देता है, जिसे बाद में सही तर्क के पक्ष में 3 1 4
छोड़ दिया जाता है, जिसे जब एक कदम छोड़ दिया जाता है 1 4 3
। इसके बाद मध्य लैम्ब्डा के दाहिने तर्क के 3 1 4
रूप में बाईं ओर के साथ बाएं तर्क के रूप में उपयोग किया जाता है। बाएं तर्क को दाएं के लिए छोड़ दिया गया है, जिसने एक कदम छोड़ दिया पैदावार को घुमाया 4 3 1
। इसके बाद सबसे बाएं लंबो का एकमात्र तर्क ⍺
बन जाता है , इसलिए "पहला कार्य" बन जाता है, पहला तत्व वापस लौटता है; 4
।
स्कोरिंग
जब वास्तविक डेटा का उपयोग करके परीक्षण करने का समय हो जाता है, तो इस टेस्ट हार्नेस (प्रीटेस्ट डेटा के साथ जुड़ी हुई आबादी) का उपयोग करें। परीक्षण मामले इनपुट क्षेत्र में जाते हैं, और आउटपुट एक साथ सभी 500 कार्यक्रमों की कुल बाइट गिनती होगी। (यह एक त्रुटि भी फेंक देगा, लेकिन यह सिर्फ इसलिए है क्योंकि यह इनपुट के रूप में मूल्यांकन करने की कोशिश करता है।)