ट्रेनों में /
और निपटने के लिए ट्रिक्स⌿
जब आप गाड़ियों का उपयोग कर रहे हों तो आप कटौती f/
जैसे योग का उपयोग कर सकते हैं +/
या कटौती को दोहरा सकते हैं //
। हालांकि, अगर आपकी ट्रेन में कटौती के बाईं ओर अधिक हिस्से हैं, तो आपको एक एटॉप बनाने के लिए कोष्ठक की आवश्यकता है। यहां बाइट्स को बचाने के लिए कुछ ट्रिक्स दी गई हैं।
1∊
मोनडिक के बजाय ∨/
या ∨⌿
बूलियन सरणियों पर उपयोग करें
टास्क: दो समान लंबाई वाले स्ट्रिंग्स A और B को देखते हुए, A और B के किसी भी संबंधित वर्णों के बराबर होने पर 2 लौटाएं, अन्यथा 0। उदाहरण के लिए A←'abc'
और B←'def'
देता है 0
और A←'abc'
और B←'dec'
देता है 2
।
एक dfn समाधान हो सकता है A{2×∨/⍺=⍵}B
लेकिन आप इसे टैसिट करके छोटा करना चाहते हैं। A(2×∨/=)B
काम करने वाला नहीं है क्योंकि ट्रेन के गठन के नियम इस तरह से पार्स करते हैं 2 (× ∨/ =)
लेकिन आप चाहते हैं 2 × (∨/=)
।
निरीक्षण करें कि ∨/
या ∨⌿
बूलियन वेक्टर पर ( ∨/,
या ∨⌿,
उच्च रैंक सरणियों के लिए) पूछता है कि क्या कोई 1 मौजूद है, अर्थात 1∊
, इसलिए हम अपनी ट्रेन को इस रूप में लिख सकते हैं 2×1∊=
।
ध्यान दें कि ∊
इसका सही तर्क है, इसलिए आप इसका उपयोग प्रत्येक पंक्ति या स्तंभ को अलग से कम करने के लिए नहीं कर सकते।
1⊥
मोनैडिक +/
या के बजाय का उपयोग करें+⌿
कार्य: सूचियों L और एक सूचकांक N की सूची को देखते हुए, Nth सूची का योग तीन बार लौटाएं। जैसे L←(3 1 4)(2 7)
और N←1
देता है 24
।
एक dfn समाधान हो सकता है N{3×+/⍺⊃⍵}L
लेकिन आप इसे टैसिट करके छोटा करना चाहते हैं। N(3×+/⊃)L
काम करने वाला नहीं है क्योंकि ट्रेन के गठन के नियम इस तरह से पार्स करते हैं 3(× +/ ⊃)
लेकिन आप चाहते हैं 3 × (+/⊃)
।
ध्यान रखें कि एकात्मक (आधार -1) में संख्याओं की सूची का मूल्यांकन करना सूची के समतुल्य है क्योंकि a { a , b , c , d } = a + b + c + d = ( a × 1³) + ( b × 1²) ) + ( c × 1¹) + ( d × 1।)। इसलिए +/a b c d
जैसा है वैसा ही है 1⊥a b c d
, और हम अपनी ट्रेन को इस प्रकार लिख सकते हैं 3×1⊥⊃
।
ध्यान दें कि उच्च-श्रेणी के तर्कों पर, 1⊥
के बराबर है +⌿
।
स्केलर और / या वेक्टर तर्कों f.g
के f/g
साथ उपयोग करें
कार्य: एक सूची एल और एक नंबर एन को देखते हुए सीमा 1 पूरी तरह से कम से कम विभाजन शेष की संख्या जब एल के तत्वों Neg से विभाजित कर रहे लौटने L←31 41 59
और N←7
देता है 1 2 3
।
एक dfn समाधान हो सकता है N{⍳⌊/⍺|⍵}L
लेकिन आप इसे टैसिट करके छोटा करना चाहते हैं। N(⍳⌊/|)L
काम करने वाला नहीं है क्योंकि ट्रेन के गठन के नियम इस तरह से पार्स करते हैं ⍳ (⌊/) |
लेकिन आप चाहते हैं ⍳ (⌊/|)
।
A f.g B
स्केलर दो कार्यों का आंतरिक उत्पाद जब तर्क स्केलर और / या वैक्टर समान f/ A g B
होते हैं क्योंकि दोनों ही (A[1] g B[1]) f (A[2] g B[2]) f (A[3] g B[3])
आदि होते हैं , इसलिए हम अपनी ट्रेन को इस प्रकार लिख सकते हैं ⍳⌊.|
।
ध्यान दें कि यह उच्च-श्रेणी के सरणियों के लिए काम नहीं करता है।
बूलियन बाएं और सरल वेक्टर सही तर्कों ∊⊆
के /
साथ उपयोग करें
कार्य: एक सूची L और एक संख्या N को देखते हुए, सूची को फ़िल्टर करें ताकि केवल N से अधिक संख्या बनी रहे। जैसे L←3 1 4
और N←1
देता है 3 4
।
एक dfn समाधान हो सकता है N{(⍺<⍵)/⍵}L
लेकिन आप इसे टैसीट करके छोटा करना चाहते हैं। N(</⊢)L
काम करने वाला नहीं है क्योंकि बाध्यकारी नियम इसे पार्स करेंगे, (</) ⊢
लेकिन आप ऑपरेटर को कम करने के बजाय /
फ़ंक्शन प्रतिकृति बनाना चाहते हैं ।
⊆
बूलियन के साथ डायैडिक बाएं तर्क के विभाजन को बाएं तर्क में 1s के रन के अनुसार सही तर्क देता है, 0 से संकेतित तत्वों को छोड़ देता है। यह लगभग वही है जो हम चाहते हैं, अवांछित विभाजन के लिए बचाएं। हालाँकि, हम विमुद्रीकरण को लागू करके विभाजन से छुटकारा पा सकते हैं ∊
। इस प्रकार {(⍺<⍵)/⍵}
बन सकता है {∊(⍺<⍵)⊆⍵}
और इस प्रकार हम अपनी ट्रेन को इस प्रकार लिख सकते हैं ∊<⊆⊢
।
ध्यान दें कि यह उच्च-श्रेणी के सरणियों के लिए काम नहीं करता है।
0⊥
इसके बजाय ⊢/
या ⊢⌿
संख्यात्मक तर्कों के साथ उपयोग करें
टास्क: एक सूची एल और एक नंबर एन को देखते हुए, एन को लेग के सबसे सही तत्व के साथ गुणा करें L←3 1 4
और N←2
देता है 8
।
एक dfn समाधान हो सकता है N{⍺×⊢/⍵}L
लेकिन आप इसे टैसिट करके छोटा करना चाहते हैं। N(⊣×⊢/⊢)L
काम करने वाला नहीं है क्योंकि ट्रेन के गठन के नियम इस तरह से पार्स करते हैं ⊣ (× ⊢/ ⊢)
लेकिन आप चाहते हैं ⊣ × (⊢/⊢)
।
इस बात 0⊥
पर ध्यान दें कि एक न्यूमेरिक ऐरे के समान है ⊢⌿
, इसलिए हम अपनी ट्रेन को इस प्रकार लिख सकते हैं ⊣×0⊥⊢
।
ध्यान दें कि यह उच्च-श्रेणी सरणियों के अंतिम प्रमुख सेल का चयन करता है।