কম্পিউটার টিউটোরিয়াল

পাইথনে গ্রিড বক্সে বল কোন খানায় পড়বে তা বের করার প্রোগ্রাম


মান লিজিয়ে আমাদের একটি m x n গ্রিড বক্স দেওয়া আছে, যেখানে প্রতিটি সেলে একটি বোর্ড আছে যা হয় টপ-রাইট থেকে বটম-লেফ্টে বা টপ-লেফ্ট থেকে বটম-রাইটে পজিশন করা। উপরের সেলগুলো থেকে একটি বল বক্সের ভিতরে ডाला হয় এবং আমাদের চেক করতে হবে বলটি বক্সের নিচে পৌঁছায় কিনা। গ্রিডটি ম্যাট্রিক্স আকারে দেওয়া আছে। যদি সেলটি 1 হয় তবে ডায়াগোনাল বোর্ড টপ-লেফ্ট থেকে বটম-রাইটে; যদি -1 হয় তবে টপ-রাইট থেকে বটম-লেফ্টে। n বল ডালা হলে, কতগুলো বল নিচে পৌঁছেছে সেটি বের করতে হবে।

পাইথনে গ্রিড বক্সে বল কোন খানায় পড়বে তা বের করার প্রোগ্রাম

৩x৩ গ্রিড বক্সের উদাহরণ।

যেমন, ইনপুট হলে mat = [[1,1,1,-1],[-1,1,1,-1],[1,-1,-1,1],[1,-1,1,-1]], তবে আউটপুট হবে [-1, -1, -1, -1]।

সমাধানের ধাপসমূহ

  • i := mat-এর রো সংখ্যা

  • j := mat[0]-এর কলাম সংখ্যা

  • res := নতুন লিস্ট

  • val = 0 থেকে j-1 পর্যন্ত:

    • x := val

    • r = 0 থেকে i-1 পর্যন্ত:

      • s := mat[r][x]

      • x := x + mat[r][x]

      • যদি x < 0 or x >= j or mat[r][x] != s হয়, তবে:

        • res.append(-1)

        • লুপ থেকে বের হয়ে যান।

    • অন্যথায়, res.append(x)

  • res রিটার্ন করুন।

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন:

def solve(mat):
    i, j = len(mat), len(mat[0])
    res = []
    for val in range(j):
        x = val
        for r in range(i):
            s = mat[r][x]
            x += mat[r][x]
            if x < 0 or x >= j or mat[r][x] != s:
                res.append(-1)
                break
        else:
            res.append(x)
    return res

print(solve([[1, 1, 1, -1], [-1, 1, 1, -1], [1, -1, -1, 1], [1, -1, 1, -1]]))

ইনপুট

[[1, 1, 1, -1], [-1, 1, 1, -1], [1, -1, -1, 1],[1, -1, 1, -1] ]

আউটপুট

[-1, -1, -1, -1]

  1. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে ছোট সংখ্যা বের করা

  2. পাইথন প্রোগ্রাম অ্যারেতে সবচেয়ে বড় এলিমেন্ট বের করা

  3. পাইথনে ম্যাট্রিক্সের ট্রান্সপোজ বের করা

  4. পাইথনে অ্যারের যোগফল বের করা