কম্পিউটার

একটি সুডোকু গ্রিড যাচাই করার প্রোগ্রামটি পাইথনে সমাধানযোগ্য বা নয়


ধরুন আমাদের একটি 9×9 সুডোকু গ্রিড আছে। আমাদের যাচাই করতে হবে সেটা বৈধ নাকি এখন। শুধুমাত্র ভরা কক্ষগুলিকে নিম্নলিখিত নিয়ম অনুসারে যাচাই করতে হবে -

  • প্রতিটি সারিতে পুনরাবৃত্তি ছাড়াই 1−9 থেকে সংখ্যা থাকতে হবে।

  • প্রতিটি কলামে পুনরাবৃত্তি ছাড়াই 1−9 থেকে সংখ্যা থাকতে হবে।

  • গ্রিডের 9টি (3−3) সাব-বক্সের প্রতিটিতে পুনরাবৃত্তি ছাড়াই 1−9 থেকে সংখ্যা থাকতে হবে।

ধরুন সুডোকু গ্রিড −

এর মত

একটি সুডোকু গ্রিড যাচাই করার প্রোগ্রামটি পাইথনে সমাধানযোগ্য বা নয়

এটি বৈধ।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • আমি 0 থেকে 8 রেঞ্জের জন্য

    • সারি, কোল এবং ব্লক নামে কিছু খালি অভিধান তৈরি করুন, রো_কিউব :=3 * (i / 3), এবং col_cube :=3 * (i mod 3)

    • j এর জন্য 0 থেকে 8

      পরিসরে
      • যদি বোর্ড[i, j] ফাঁকা না হয় এবং বোর্ড[i, j] সারি হয়, তাহলে মিথ্যা ফেরত দিন

      • সারি [বোর্ড[i, j]] :=1

      • যদি বোর্ড [j, i] খালি না হয় এবং বোর্ড [j, i] কলে থাকে, তাহলে মিথ্যা ফেরত দিন

      • col[board[j, i]] :=1

      • rc :=row_cube + j/3 এবং cc :=col_cube + j মোড 3

      • যদি ব্লকে বোর্ড [rc, cc] এবং বোর্ড [rc, cc] ফাঁকা না হয়, তাহলে মিথ্যা ফেরত দিন

      • ব্লক[বোর্ড[আরসি, সিসি]] :=1

  • প্রত্যাবর্তন সত্য

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution(object):
   def isValidSudoku(self, board):
      for i in range(9):
         row = {}
         column = {}
         block = {}
         row_cube = 3 * (i//3)
         column_cube = 3 * (i%3)
         for j in range(9):
            if board[i][j]!='.' and board[i][j] in row:
               return False
            row[board[i][j]] = 1
            if board[j][i]!='.' and board[j][i] in column:
               return False
            column[board[j][i]] = 1
            rc= row_cube+j//3
            cc = column_cube + j%3
            if board[rc][cc] in block and board[rc][cc]!='.':
               return False
            block[board[rc][cc]]=1
         return True
ob1 = Solution()
print(ob1.isValidSudoku([
["5","3",".",".","7",".",".",".","."],
["6",".",".","1","9","5",".",".","."],
[".","9","8",".",".",".",".","6","."],
["8",".",".",".","6",".",".",".","3"],
["4",".",".","8",".","3",".",".","1"],
["7",".",".",".","2",".",".",".","6"],
[".","6",".",".",".",".","2","8","."],
[".",".",".","4","1","9",".",".","5"],
[".",".",".",".","8",".",".","7","9"]]))

ইনপুট

[
["5","3",".",".","7",".",".",".","."],
["6",".",".","1","9","5",".",".","."],
[".","9","8",".",".",".",".","6","."],
["8",".",".",".","6",".",".",".","3"],
["4",".",".","8",".","3",".",".","1"],
["7",".",".",".","2",".",".",".","6"],
[".","6",".",".",".",".","2","8","."],
[".",".",".","4","1","9",".",".","5"],
[".",".",".",".","8",".",".","7","9"]]

আউটপুট

True

  1. আমরা পাইথনে লাফ দিয়ে n অবস্থানে পৌঁছাতে পারি কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  2. n চেক করার প্রোগ্রামটি পাইথনে k এর যোগফল হিসাবে দেখানো যেতে পারে বা না

  3. হিপ চেক করার প্রোগ্রামটি পাইথনে সর্বোচ্চ হিপ তৈরি করছে নাকি নয়

  4. একটি প্রদত্ত স্ট্রিং কীওয়ার্ড কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম