जे , 16 11 बाइट्स
(+$:)^:=1+?
इसे ऑनलाइन आज़माएं!
व्याख्या
टी एल; डॉ 1+?
। मर रोल करता है, (+$:)^:=
केवल तब ही दोहराता है जब यह इनपुट के बराबर होता है।
समारोह 4 क्रियाओं की एक ट्रेन है:
┌─ +
┌───┴─ $:
┌─ ^: ─┴─ =
│
──┤ ┌─ 1
└──────┼─ +
└─ ?
एक ट्रेन है जब 2 या अधिक क्रियाओं को समतल किया जाता है। यहाँ, उत्तर प्रपत्र का हैf g h j
:
(+$:)^:= 1 + ?
f g h j
तथाकथित "4-ट्रेन" को एक हुक और एक कांटा के रूप में रखा गया है:
f g h j ⇔ f (g h j)
इस प्रकार, उत्तर इसके बराबर है:
(+$:)^:= (1 + ?)
हुक: (f g) x
औरx (f g) y
दो क्रियाओं का एक विमुद्रीकरण (एक-तर्क) हुक, एक तर्क दिया x
, निम्नलिखित समानता रखती है:
(f g) x ⇔ x f (g x)
उदाहरण के लिए, का (* -) 5
मूल्यांकन करता है5 * (- 5)
, जो मूल्यांकन करता है _25
।
इसका मतलब है कि हमारी 4-ट्रेन, हुक f
और (g h j)
, के बराबर है:
(f (g h j)) x ⇔ x f ((g h j) x)
लेकिन f
यहाँ क्या करता है? पॉवर संयोजन (+$:)^:=
का उपयोग करके दो क्रियाओं का एक संयोजन है : एक और हुक ( ) और एक क्रिया ( )। नोट है कि यहाँ है dyadic -यह दो तर्क है ( और )। इसलिए हमें यह देखना होगा कि कैसे व्यवहार किया जाए। शक्ति संयोजन एक क्रिया और या तो एक क्रिया या एक संज्ञा लेता है (एक संज्ञा सिर्फ डेटा का एक टुकड़ा है) और कई बार लागू होता है। उदाहरण के लिए, ले लो । निम्नलिखित समानताएं रखती हैं:^:
(+$:)
=
f
x
(g h j) x
^:
f^:o
f
o
f
o
o = 3
(f^:3) x ⇔ f (f (f x))
x (f^:3) y ⇔ x f (x f (x f y))
यदि o
एक क्रिया है, तो शक्ति संयुग्मन केवल o
तर्कों पर मूल्यांकन करेगा और पुनरावृत्ति गणना के रूप में संज्ञा परिणाम का उपयोग करेगा।
हमारे क्रिया के लिए, o
है =
, समानता क्रिया। यह 0
विभिन्न तर्कों के लिए और 1
समान तर्कों के लिए मूल्यांकन करता है । हम (+$:)
समान तर्क के लिए एक बार हुक दोहराते हैं और अलग-अलग लोगों के लिए समय नहीं देते हैं। स्पष्टीकरण के लिए अंकन की आसानी के लिए, चलो y ⇔ ((g h j) x)
। याद रखें कि हमारा शुरुआती हुक इसके बराबर है:
x (+$:)^:= ((g h j) x)
x (+$:)^:= y
संयोजन का विस्तार, यह हो जाता है:
x ((+$:)^:(x = y)) y
अगर x
और y
समान हैं, तो यह बन जाता है:
x (+$:)^:1 y ⇔ x (+$:) y
अन्यथा, यह बन जाता है:
x (+$:)^:0 y ⇔ y
अब, हमने monadic forks को देखा है। यहाँ, हमारे पास एक डाईडिक कांटा है:
x (f g) y ⇔ x f (g y)
इसलिए, जब x
और y
जैसा हो, हमें मिलता है:
x (+$:) y ⇔ x + ($: y)
क्या है $:
? यह पूरी क्रिया को संदर्भित करता है और पुनरावृत्ति की अनुमति देता है। इसका मतलब यह है कि, जब x
और y are the same, we apply the verb to
y and add
x` इसके लिए।
फोर्क्स: (g h j) x
अब, भीतर का कांटा क्या करता है? यह y
हमारे आखिरी उदाहरण में था। तीन क्रियाओं के एक अद्वैत कांटे के लिए, एक तर्क दिया जाता है x
, निम्नलिखित तुल्यता पकड़:
(g h j) x ⇔ (g x) h (j x)
यह अगले उदाहरण के लिए, हम क्रियाओं नाम दिया SUM
, DIVIDE
और LENGTH
है, जो कि आप क्या लगता है वे हो सकता है। यदि हम तीनों को एक कांटा बनाते हैं, तो हम प्राप्त करते हैं:
(SUM DIVIDE LENGTH) x ⇔ (SUM x) DIVIDE (LENGTH x)
यह कांटा औसत के लिए मूल्यांकन करता है x
(मानकर x
संख्याओं की एक सूची है)। जे में, हम वास्तव में इसे उदाहरण के रूप में लिखेंगे +/ % #
।
कांटे के बारे में एक आखिरी बात। जब सबसे बाईं ओर "टाइन" (ऊपर हमारे प्रतीकात्मक मामले में g
) एक संज्ञा है, तो इसे उस मान को लौटाने वाले एक स्थिर फ़ंक्शन के रूप में माना जाता है।
इस सब जगह के साथ, अब हम उपरोक्त कांटा समझ सकते हैं:
(1 + ?) x ⇔ (1 x) + (? x)
⇔ 1 + (? x)
?
[ 0 , x )[ १ , x ]
यह सब एक साथ डालें
इन सभी बातों को देखते हुए, हमारी क्रिया इसके समकक्ष है:
((+$:)^:=1+?) x ⇔ ((+$:)^:= 1 + ?) x
⇔ ((+$:)^:= (1 + ?)) x
⇔ x ((+$:)^:=) (1 + ?) x
⇔ x ((+$:)^:=) (1 + (? x))
⇔ x (+$:)^:(x = (1 + (? x))
(let y = 1 + (? x))
if x = y ⇒ x + $: y
otherwise ⇒ y
यह वांछित कार्यक्षमता व्यक्त करता है।