ধরুন আমাদের একটি 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