दिल्लोग एपीएल, 27 अक्षर
⊃⌽∨.∧⍨⍣≡1≥+/¨|∘.-⍨,(~×⍳∘⍴)⎕
⎕मूल्यांकन किया गया इनपुट। APL एक मैट्रिक्स और वैक्टर के एक वेक्टर के बीच अंतर करता है। यह प्रोग्राम मानता है कि इनपुट एक मैट्रिक्स है।
(~×⍳∘⍴)Aके बराबर कांटा है (~A) × ⍳⍴A। ⎕दो बार उल्लेख करने या एक चर को प्रस्तुत करने से बचने की आवश्यकता है ।
⍴Aका आकार है A। 4-बाय -7 मैट्रिक्स के लिए आकार है 4 7।
⍳सूचकांक जनरेटर है। ⍳4है 1 2 3 4। ⍳4 7वैक्टर (1 1)(1 2)...(4 7)4-बाय -7 मैट्रिक्स में व्यवस्थित है।
~Aके टुकड़े झपटते हैं A।
×⍳⍴Aफ़्लिप बिट्स द्वारा गुणा करके, हम सभी मुक्त कोशिकाओं के निर्देशांक को संरक्षित करते हैं और सभी दीवारों को चालू करते हैं 0 0।
,समन्वय जोड़े के मैट्रिक्स को उठाता है, अर्थात इसे एक वेक्टर में रैखिक करता है। इस मामले में वेक्टर में जोड़े शामिल होंगे।
∘.-⍨Aया जोड़ो के A∘.-Aतत्वों को घटाता है A। ध्यान दें कि यहां तत्व Aस्वयं जोड़े हैं।
| निरपेक्ष मूल्य
+/¨प्रत्येक जोड़ी को पूर्ण मूल्यों के योग। यह हमें भूलभुलैया में हर जोड़ी कोशिकाओं के बीच ग्रिड की दूरी देता है, दीवारों के लिए बचाते हैं।
1≥हम केवल 1 से अधिक की दूरी पर पड़ोसियों में घुसपैठ कर रहे हैं, यह दीवारों को भी बाहर निकालता है। अब हमारे पास एक ग्राफ है आसन्न मैट्रिक्स।
∨.∧⍨⍣≡ फ्लोयड - वॉरहॉल का सकर्मक क्लोजर एल्गोरिथम
(f⍣n)A(यहां इस्तेमाल नहीं किया गया) जहां nएक पूर्णांक है, बिजली ऑपरेटर है। यह लागू होता है fकरने के लिए A nबार: f f ... f A।
(f⍣g)Aजहां gएक फ़ंक्शन है, निश्चित बिंदु ऑपरेटर है, उर्फ "पावर लिमिट"। यह श्रृंखला कंप्यूटिंग रहती है A, f A, f f A, ... जब तक ((f⍣i)A) g ((f⍣(i+1))A)कुछ के लिए सच रिटर्न i। इस मामले में हम मिलान ( ≡) का उपयोग करते हैं g।
∨.∧⍨Aया A∨.∧Aफ़्लॉइड के एल्गोरिथ्म में एक कदम है। f.gआव्यूह गुणन (का सामान्यीकरण है +.×), यहाँ हम संयोजन (का उपयोग ∧) और अलगाव ( ∨के स्थान पर) +और ×।
⊃⌽⍣≡चरण को पर्याप्त बार लागू करने और स्थिर स्थिति तक पहुंचने के बाद , हमें परिणाम प्राप्त करने के लिए मैट्रिक्स के शीर्ष-दाएं कोने को देखना चाहिए, इसलिए हम इसे फ्लिप करते हैं ( ⌽) और पहले, शीर्ष-बाएं आइटम ( ⊃) लें।
विज़ुअलाइज़ेशन के ⍣≡कदम