ধরুন আমাদের একটি 2D ম্যাট্রিক্স ম্যাট আছে। আমাদের ম্যাট্রিক্স উপাদানগুলিকে সর্পিল উপায়ে প্রিন্ট করতে হবে। প্রথমে প্রথম সারি (ম্যাট[0, 0]) থেকে শুরু করে, পুরো বিষয়বস্তুটি প্রিন্ট করুন এবং তারপরে প্রিন্ট করার জন্য শেষ কলামটি অনুসরণ করুন, তারপরে শেষ সারি এবং আরও অনেক কিছু, এইভাবে এটি উপাদানগুলিকে সর্পিল ফ্যাশনে প্রিন্ট করে। পি>
সুতরাং, যদি ইনপুট মত হয়
7 | 10 | 9 |
2 | 9 | 1 |
6 | 2 | 3 |
9 | 1 | 4 |
2 | 7 | 5 |
9 | 9 | 11 |
তাহলে আউটপুট হবে [7, 10, 9, 1, 3, 4, 5, 11, 9, 9, 2, 9, 6, 2, 9, 2, 1, 7]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- d :=0
- টপ :=0, নিচে :=ম্যাট্রিক্সের সারি সংখ্যা – 1, বাম :=0, ডানে :=ম্যাট্রিক্সের কলাম সংখ্যা - 1
- c :=0
- res :=একটি নতুন তালিকা
- নির্দেশ :=0
- যখন উপরে <=নিচে এবং বাম <=ডানে, কর
- যদি দিকনির্দেশ 0 এর মত হয়, তাহলে
- বাম থেকে ডান + 1 রেঞ্জের জন্য,
- করুন
- রেজে ম্যাট্রিক্স [top, i] ঢোকান
- শীর্ষ :=শীর্ষ + 1
- বাম থেকে ডান + 1 রেঞ্জের জন্য,
- যদি দিক 1 এর মত হয়, তাহলে
- আমি রেঞ্জ টপ থেকে ডাউন + 1 এর জন্য, কর
- রেজে ম্যাট্রিক্স[i, right] ঢোকান
- ডান :=ডান - 1
- আমি রেঞ্জ টপ থেকে ডাউন + 1 এর জন্য, কর
- যদি দিকনির্দেশ 2 এর মত হয়, তাহলে
- আমি ডান থেকে বামে পরিসরে - 1, 1 দ্বারা হ্রাস করুন,
- করুন
- রেজে ম্যাট্রিক্স [ডাউন, i] ঢোকান
- down :=down - 1
- আমি ডান থেকে বামে পরিসরে - 1, 1 দ্বারা হ্রাস করুন,
- যদি দিক 3 এর মত হয়, তাহলে
- এর জন্য আমি নিচে থেকে শীর্ষ পর্যন্ত - 1, 1 দ্বারা হ্রাস, কর
- রেজে ম্যাট্রিক্স [i, left] ঢোকান
- বাম :=বাম + 1
- এর জন্য আমি নিচে থেকে শীর্ষ পর্যন্ত - 1, 1 দ্বারা হ্রাস, কর
- যদি দিকনির্দেশ 0 এর মত হয়, তাহলে
- নির্দেশ :=(নির্দেশ + 1) মোড 4
- রিটার্ন রিটার্ন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
শ্রেণীর সমাধান:def solve(self, matrix):d =0 top =0 down =len(matrix) - 1 left =0 right =len(matrix[0]) - 1 c =0 res =[] দিকনির্দেশ =0 যখন উপরে <=নিচে এবং বাম <=ডান:যদি দিক ==0:রেঞ্জে i এর জন্য (বাম, ডান + 1):res.append(ম্যাট্রিক্স[শীর্ষ][i]) শীর্ষ +=1 যদি দিক ==1:সীমার মধ্যে i এর জন্য (উপরে, নিচে + 1):res.append(matrix[i][right]) right -=1 যদি দিকনির্দেশ ==2:i রেঞ্জে (ডান, বাম - 1, -1) ):res.append(matrix[down][i]) down -=1 যদি দিক ==3:এর জন্য i রেঞ্জে (নীচে, উপরে - 1, -1):res.append(matrix[i][বাম] ) বাম +=1 দিক =(দিক + 1) % 4 রিটার্ন রিসোব =সমাধান()ম্যাট্রিক্স =[ [7, 10, 9], [2, 9, 1], [6, 2, 3], [9, 1, 4], [2, 7, 5], [9, 9, 11]]print(ob.solve(matrix))
ইনপুট
<প্রে> [ [7, 10, 9],[২, ৯, ১],
[৬, ২, ৩],[9, 1, 4],
[২, ৭, ৫],[9, 9, 11]
আউটপুট
[7, 10, 9, 1, 3, 4, 5, 11, 9, 9, 2, 9, 6, 2, 9, 2, 1, 7]