एपीएल के सम्मान में इस वर्ष 50 साल के एक इंटरेक्टिव टूल के रूप में प्रस्तुत किया गया
पृष्ठभूमि
केन [आइवरसन] ने अगस्त 1963 में मैकेनिकल लैंग्वेज स्ट्रक्चर्स, प्रिंसटन, एनजे पर एक वर्किंग कॉन्फ्रेंस में प्रोग्रामिंग लैंग्वेज में अपना पेपर फॉर्मेलिज्म पेश किया । संघर्षों की सूची प्रसिद्ध और जल्द ही प्रसिद्ध नामों से भरी हुई है, और कुछ भविष्य के ट्यूरिंग अवार्ड विजेता (बैकस, करी, डेज्स्ट्रा, फ्लॉयड, आइवरसन, नेवेल, पर्लिस, विल्केस)। यह पेपर उस प्रस्तुति के बाद होने वाली चर्चा को भी रिकॉर्ड करता है, जो केन और [एद्सर] दिज्क्स्ट्रा के बीच एक आदान-प्रदान के साथ समाप्त होती है , जिसमें केन का दिक्जस्ट्रा के प्रश्न का उत्तर एक-लाइनर था।
चुनौती
आप एक अधिक जटिल ऑपरेशन का प्रतिनिधित्व कैसे करेंगे, उदाहरण के लिए, मैट्रिक्स एम के सभी तत्वों का योग जो संबंधित पंक्ति और स्तंभ सूचक के योग के बराबर हैं?
किसी दिए गए पूर्णांक मैट्रिक्स में प्रत्येक तत्व की राशि की गणना करने के लिए एक स्निपेट या अभिव्यक्ति (पूर्ण कार्यक्रम या फ़ंक्शन की कोई आवश्यकता नहीं) लिखें जो इसके सूचक के योग के बराबर है। या, जैसा कि FryAmTheEggman डालता है यह: एक मैट्रिक्स दी एम तत्वों के साथ एक ij प्रत्येक की राशि वापस कर एक ij जहां एक ij = i + j।
आप पहले से ही एक चर या स्मृति स्थान में होने वाले मैट्रिक्स को मान सकते हैं, या आप इसे एक तर्क या इनपुट के रूप में ले सकते हैं। आप 0 या 1 आधारित सूचकांकों का उपयोग कर सकते हैं।
परीक्षण के मामलों
0
खाली मैट्रिक्स के लिए
2
0
0 आधारित सूचकांकों के लिए या 2
1-आधारित के लिए
1 5 2
9 4 2
5 9 6
2
1 आधारित या 10
1 आधारित के लिए
0 3 0 4
0 4 1 4
4 3 1 2
-2 4 -2 -1
11
3 -1 3 3
3 -1 3 1
6
1 आधारित या 3
1 आधारित के लिए
उपाख्यान
आइवरसन का उत्तर ++ / ( M =' s ⨢ ⍳ ¹ //) // M था , जो कि न तो Iverson संकेतन में मान्य है जैसा कि A प्रोग्रामिंग लैंग्वेज में परिभाषित किया गया है , और न ही आखिरकार APL बन गया है। इवर्सन अंकन में, यह हो गया होता + / ( एम = ⍳ ¹ ( μ ( एम )) ⨢ ⍳ ¹ ( ν ( एम ))) / एम । एपीएल के पहले संस्करणों में यह था +/(,M=(⍳1↑⍴M)∘.+⍳1↓⍴M)/,M
।