ডায়ালগ এপিএল, 27 টি অক্ষর
⊃⌽∨.∧⍨⍣≡1≥+/¨|∘.-⍨,(~×⍳∘⍴)⎕
⎕
মূল্যায়ন ইনপুট। এপিএল একটি ম্যাট্রিক্স এবং ভেক্টরগুলির একটি ভেক্টরের মধ্যে পার্থক্য করে। এই প্রোগ্রামটি অনুমান করে যে ইনপুটটি একটি ম্যাট্রিক্স।
(~×⍳∘⍴)A
সমান একটি কাঁটাচামচ (~A) × ⍳⍴A
। এটি ⎕
দু'বার উল্লেখ করা বা কোনও ভেরিয়েবল প্রবর্তন এড়াতে হবে ।
⍴A
এর আকার A
। 4-বাই -7 ম্যাট্রিক্সের জন্য আকারটি 4 7
।
⍳
সূচক জেনারেটর হয়। ⍳4
হয় 1 2 3 4
। 4-বাই -7 ম্যাট্রিক্সে সজ্জিত ⍳4 7
ভেক্টরগুলি (1 1)(1 2)...(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
ম্যাট্রিক্স গুণ (একটি সাধারণীকরণ ছাড়া কিছুই না +.×
), এখানে আমরা একত্রে (ব্যবহার ∧
) এবং অসম্বন্ধ ( ∨
স্থানে) +
এবং ×
।
⊃⌽
⍣≡
পদক্ষেপটি পর্যাপ্ত সময় প্রয়োগ করার পরে এবং একটি স্থিতিশীল অবস্থায় পৌঁছানোর পরে , ফলাফলটি পেতে আমাদের অবশ্যই ম্যাট্রিক্সের উপরের-ডান কোণটি সন্ধান করতে হবে, সুতরাং আমরা এটিকে ফ্লিপ করব ( ⌽
) এবং প্রথমটি, উপরের-বাম আইটেমটি ( ⊃
) নেব ।
⍣≡
এর পদক্ষেপের ভিজ্যুয়ালাইজেশন