বিবেচনা
[
"ABCD"
"EFGH"
"IJKL"
]
এর উপরের মূল এবং ত্রিভুজগুলি পেতে, আমরা দ্বিতীয় সারির প্রথম চরটি এবং তৃতীয়টির প্রথম দুটি বের করতে পারি:
[
"ABCD"
"FGH"
"KL"
]
মনে রাখবেন যে সমস্ত কলামগুলি একটি তির্যকের সাথে মিলে যায়, সুতরাং অ্যারেটিকে "জিপ করা" (অর্থাত্ সারি এবং কলামগুলি স্থানান্তর করা) উপরোক্ত চারটি ত্রিভুজ যুক্ত অ্যারে প্রদান করবে:
[
"AFK"
"BGL"
"CH"
"D"
]
আমরা এখনও মূল ত্রিভুজের নীচে কর্ণগুলি মিস করছি।
যদি আমরা নিজেই জিপ করে এবং উপরের প্রক্রিয়াটির পুনরাবৃত্তি করি, আমরা মূল তির্যক এবং এর নীচে সমস্ত তির্যক সমন্বিত একটি অ্যারে পাব । উভয় অ্যারের সেট ইউনিয়ন গণনা করতে এটাই বাকি রয়েছে।
সবগুলোকে একত্রে রাখ:
[.zip]{:A,,{.A=>}%zip}/|
[.zip]{ }/ # For the original array and it's transpose, do the following:
:A # Store the array in A.
,,{ }% # For each I in [ 0 1 ... len(A) ], do the following:
.A=> # Push A[I] and shift out its first I characters.
zip # Transpose the resulting array.
| # Perform set union.
এটি অনলাইনে চেষ্টা করুন।
অবশেষে, আমাদের যদি কেবল তির্যক প্রয়োজন কারণ আমরা তাদের ভিতরে একটি স্ট্রিং খুঁজছি (যেমন ওয়ার্ড সন্ধান ধাঁধা যেমন আমি এই প্রশ্নটি অনুপ্রাণিত করি), একটি "কম পরিষ্কার" পদ্ধতিও উপযুক্ত হতে পারে।
তুমি ব্যবহার করতে পার
..,n**\.0=,\,+)/zip
সমস্ত তির্যক, এবং কিছু অপ্রয়োজনীয় লাইনফিড অক্ষর পেতে।
আমি এই উত্তরে প্রক্রিয়াটি বিস্তারিতভাবে ব্যাখ্যা করেছি ।
এটি অনলাইনে চেষ্টা করুন।