2009-07-17 13 views
14

मैं Project Euler पर समस्याओं के माध्यम से काम कर रहा हूं, और कुछ समाधान जो अन्य लोगों ने पोस्ट किया है, एक ट्रिपल-ऑन-साइन का उपयोग करते हैं, यानी '@@@'। V7 के लिए मदद ब्राउज़र में, मुझे @@ के लिए एक प्रविष्टि मिलती है (जो कहती है कि यह 'लागू करें' का इन्फिक्स संस्करण है) लेकिन @@@ के लिए कोई भी नहीं। इसका क्या मतलब है?गणित में, @@@ का क्या अर्थ है?

संपादित करें: यहाँ एक उदाहरण है, जो मुझे लगता है मैं परियोजना यूलर की भावना का उल्लंघन किए बिना पोस्ट कर सकते हैं लगता है:

bloc[n_, f_][t_] := {f @@@ #, #~Tr~f} & /@ Join @@ Partition[t, {n, n}, 1]; 

उत्तर

20

दूसरों के रूप में उल्लेख किया है, @@@, तकनीकी रूप में documentation for Apply में गहरी समझाया गया है है, एक वैकल्पिक तीसरा तर्क के साथ Apply के लिए आशुलिपि,।

लेकिन मैं के लिए

f @@#& /@ {{a,b} {c,d}, {e,i}} 

दूसरे शब्दों में

f @@@ {{a,b}, {c,d}, {e,i}} 

आशुलिपि के रूप में सोचने के लिए, एक शुद्ध समारोह (संक्षेप: ...#...&) लेने की तरह है कि एक Apply (संक्षेप: @@) करता है करने के लिए तर्कों की एक सूची, और Map (शॉर्टेंड: /@) कि तर्कों की ऐसी सूचियों की एक सूची में। परिणाम

{f[a,b], f[c,d], f[e,i]} 
+0

मुझे इसे समझने से पहले कुछ तरीकों से भागना पड़ा! लेकिन आप सही हैं, यह सबसे प्राकृतिक व्याख्या की तरह प्रतीत होता है। – Eric

9

@@@ के लिए स्तर पर लागू करें संक्षिप्त रूप है 1.

f @@@ {{a, b, c}, {d, e}} 

Apply[f, {{a, b, c}, {d, e}}, {1}] 

संदर्भ के बराबर है विस्तार करने की जरूरत है दायरा और स्तर विशिष्टता खंड।

संबंधित मुद्दे