&
मेटा-समारोह (वैकल्पिक इनपुट / आउटपुट विशिष्टता)
किसी फ़ंक्शन को पास करने के लिए इनपुट तर्कों की संख्या निर्दिष्ट करने का पारंपरिक तरीका $
मेटा-फ़ंक्शन का उपयोग करना है
2$: % Two-input version of :
इसी प्रकार, आउटपुट तर्कों की संख्या निर्दिष्ट करने के लिए आप #
मेटा-फंक्शन का उपयोग करके या तो आउटपुट तर्कों की संख्या निर्दिष्ट कर सकते हैं ,
2#S % Two-output version of sort
या यदि आप एक संख्या है कि पारित से अधिक उत्पादन तर्क एक समारोह के लिए परिभाषित की संख्या, केवलmod(N, numberOfOutputs) + 1
उत्पादन आपूर्ति की है।
4#S % Get only the second output of sort
आप #
केवल विशिष्ट आउटपुट तर्क प्राप्त करने के लिए इनपुट के रूप में एक तार्किक सरणी निर्दिष्ट कर सकते हैं ।
TFT#u % Three output version of unique and discard the second output
ये सभी इनपुट / आउटपुट स्पेसिफिकेशन आसान हैं लेकिन ये आपकी बाइट-काउंट को बहुत तेज़ी से बढ़ाते हैं। इस समस्या से निपटने के लिए, Matl शुरू की &
में मेटा-समारोह 17.0.0 रिलीज । यह &
मेटा-फ़ंक्शन किसी फ़ंक्शन के लिए किसी विशेष इनपुट या आउटपुट विनिर्देश के लिए एक शॉर्टकट के रूप में कार्य करता है। आइए देखें इसका क्या मतलब है।
ऊपर हमारे उदाहरण में, हम दो-इनपुट संस्करण का उपयोग करना चाहते थे :
(समान रूप से अंतरित मूल्यों का एक वेक्टर बनाता है)। के लिए इनपुट तर्क की डिफ़ॉल्ट संख्या जबकि :
है 1
(से एक सरणी बनाता है [1...N]
), यह है बहुत आम है कि एक उपयोगकर्ता जो दूसरी इनपुट की आवश्यकता है रेंज की शुरुआत मान निर्दिष्ट करने के लिए चाहते हैं। तो :
, हम के &
लिए एक शॉर्टकट होना परिभाषित किया है 2$
।
10 % Push 10 to the stack
12 % Push 12 to the stack
2$: % Create an array: [10, 11, 12]
अब निम्नलिखित बन जाता है, एक बाइट की बचत !
10 12 &:
हम कैसे निर्धारित कर सकते हैं कि तर्कों की वैकल्पिक संख्या क्या है?
इनपुट / आउटपुट विनिर्देश जो &
अनुवाद करता है वह कार्य विशिष्ट है जैसे कि हम बाइट-बचत का अनुकूलन करते हैं।
प्रत्येक फ़ंक्शन के लिए सहायता विवरण के इनपुट / आउटपुट तर्क अनुभाग को इंगित करने के लिए अद्यतन किया गया है कि इनपुट / आउटपुट की यह वैकल्पिक संख्या क्या है (यदि कोई हो)। इनपुट या आउटपुट तर्कों की संभावित संख्या को एक सीमा के रूप में प्रदर्शित किया जाता है और प्रत्येक के लिए डिफ़ॉल्ट मान कोष्ठक में दिखाए जाते हैं। इनपुट / आउटपुट युक्ति जिसे प्रतिस्थापित किया जा सकता है, कोष्ठकों के भीतर वर्ण के &
बाद दिखाया /
गया है।
यहाँ इनपुट / आउटपुट तर्क अनुभाग के लिए सहायता विवरण है :
+- Min-Max range of # of inputs
| +----- Alt. Default # of inputs
| |
V V
1--3 (1 / 2); 1 <--- Possible / Default # of outputs
^
|
Default # of inputs
आपने कैसे निर्धारित किया कि &
प्रत्येक फ़ंक्शन के लिए क्या मतलब है?
बहूत सावधानी से। StackExchange API का उपयोग करके , हम उन सभी MATL उत्तरों को डाउनलोड करने में सक्षम थे जो कभी PPCG चुनौती में उपयोग किए गए हैं। प्रत्येक उत्तर को पार्स करके, हम तब आवृत्ति निर्धारित करने में सक्षम थे जिसके साथ प्रत्येक फ़ंक्शन के लिए प्रत्येक इनपुट / आउटपुट कल्पना का उपयोग किया गया था। इस जानकारी का उपयोग करते हुए हम तब इनपुट / आउटपुट विनिर्देश को पहचानने में सक्षम थे कि &
मेटा-फ़ंक्शन को प्रत्येक फ़ंक्शन के लिए प्रतिनिधित्व करना चाहिए। कभी-कभी कोई स्पष्ट विजेता नहीं था, इसलिए कई कार्यों को वर्तमान में &
परिभाषित नहीं किया गया है।
यहां वह स्क्रिप्ट है जिसका हमने उपयोग किया (दुर्भाग्य से यह MATLAB में लिखा गया है और MATL नहीं है )।
और यहाँ / उपयोग के हिस्टोग्राम का एक उदाहरण है$
#