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

পাইথনে সুডোকু গ্রিড বৈধ (Valid) কিনা যাচাই করা

৯×৯ সুডোকু গ্রিড দেওয়া থাকলে, শুধু ভরা সেলগুলো নিচের নিয়ম মেনে চলে কিনা যাচাই করতে হবে:

  1. প্রতিটি সطر (Row) এ ১-৯ ডিজিট একবারই আসবে।
  2. প্রতিটি কলাম (Column) এ ১-৯ ডিজিট একবারই আসবে।
  3. প্রতিটি ৩×৩ সাব-বক্সে ১-৯ ডিজিট একবারই আসবে।

একই পাসে Row, Column, Block চেক

i (০-৮) লুপে প্রতিটি সেটের জন্য ডিকশনারি/সেট ব্যবহার করুন। ব্লকের ইনডেক্স ক্যালকুলেশন: row_cube = 3*(i//3), col_cube = 3*(i%3)। ভিতরের লুপে j (০-৮) দিয়ে ব্লকের সেল: rc = row_cube + j//3, cc = col_cube + j%3।

পাইথন কোড

class Solution:
    def isValidSudoku(self, board):
        for i in range(9):
            row, column, block = {}, {}, {}
            row_cube = 3 * (i // 3)
            col_cube = 3 * (i % 3)
            for j in range(9):
                # Row চেক
                if board[i][j] != '.' and board[i][j] in row:
                    return False
                row[board[i][j]] = 1
                # Column চেক
                if board[j][i] != '.' and board[j][i] in column:
                    return False
                column[board[j][i]] = 1
                # Block চেক
                rc = row_cube + j // 3
                cc = col_cube + j % 3
                if board[rc][cc] in block and board[rc][cc] != '.':
                    return False
                block[board[rc][cc]] = 1
        return True

# টেস্ট
ob1 = Solution()
board = [
    ["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"]
]
print(ob1.isValidSudoku(board))  # True

টাইম কমপ্লেক্সিটি: O(1) (ফিক্সড ৯×৯), স্পেস: O(1)। এটি লিটকোড "Valid Sudoku" সমস্যা।

  1. Python-এ জাম্প করেও পজিশন n-এ পৌঁছানো সম্ভব কিনা সেটা চেক করার প্রোগ্রাম

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

  3. পাইথনে হিপ লিস্ট ম্যাক্স হিপ কিনা চেক করা

  4. দেওয়া স্ট্রিংটি পাইথন কিওয়ার্ড কিনা চেক করার প্রোগ্রাম