কম্পিউটার

পাইথনে সর্পিল ক্রমে ম্যাট্রিক্স উপাদান প্রিন্ট করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি 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 এর জন্য, কর
        • রেজে ম্যাট্রিক্স[i, right] ঢোকান
      • ডান :=ডান - 1
    • যদি দিকনির্দেশ 2 এর মত হয়, তাহলে
      • আমি ডান থেকে বামে পরিসরে - 1, 1 দ্বারা হ্রাস করুন,
          করুন
        • রেজে ম্যাট্রিক্স [ডাউন, i] ঢোকান
      • down :=down - 1
    • যদি দিক 3 এর মত হয়, তাহলে
      • এর জন্য আমি নিচে থেকে শীর্ষ পর্যন্ত - 1, 1 দ্বারা হ্রাস, কর
        • রেজে ম্যাট্রিক্স [i, left] ঢোকান
      • বাম :=বাম + 1
  • নির্দেশ :=(নির্দেশ + 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] 

  1. একটি ম্যাট্রিক্সের সীমানা উপাদানের যোগফল প্রিন্ট করার জন্য C প্রোগ্রাম

  2. C প্রোগ্রামে O(1) অতিরিক্ত স্থান ব্যবহার করে n x n স্পাইরাল ম্যাট্রিক্স প্রিন্ট করুন।

  3. পাইথনে সারি এবং কলাম অনুসারে সাজানো ম্যাট্রিক্স থেকে সাজানো ক্রমে সমস্ত উপাদান প্রিন্ট করতে

  4. Z আকারে ম্যাট্রিক্স প্রিন্ট করার জন্য পাইথন প্রোগ্রাম