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

আংশিকভাবে ভরা সুডোকু গ্রিড সমাধান C++-এ


৯×৯ আকারের আংশিকভাবে ভরা সুডোকু গ্রিড দেওয়া আছে। লক্ষ্য হল ব্যাকট্র্যাকিং অ্যালগরিদম ব্যবহার করে সুডোকু সমাধান করা। নিয়ম: প্রতিটি সারি, কলাম এবং ৩×৩ বক্সে ১-৯ অঙ্ক একবারই আসবে।

ব্যাকট্র্যাকিং: খালি সেল পাওয়া পর্যন্ত ১-৯ অঙ্ক ট্রাই করা হয়। বৈধ হলে রিকার্শন, অবৈধ হলে ব্যাকট্র্যাক।

C++ কোড উদাহরণ
#include 
#define N 9
using namespace std;

int grid[N][N] = {
    {3,0,6,5,0,8,4,0,0},
    {5,2,0,0,0,0,0,0,0},
    {0,8,7,0,0,0,0,3,1},
    {0,0,3,0,1,0,0,8,0},
    {9,0,0,8,6,3,0,0,5},
    {0,5,0,0,9,0,6,0,0},
    {1,3,0,0,0,0,2,5,0},
    {0,0,0,0,0,0,0,7,4},
    {0,0,5,2,0,6,3,0,0}
};

bool isPresentInCol(int col, int num){
    for (int row = 0; row < N; row++)
        if (grid[row][col] == num) return true;
    return false;
}

bool isPresentInRow(int row, int num){
    for (int col = 0; col < N; col++)
        if (grid[row][col] == num) return true;
    return false;
}

bool isPresentInBox(int boxStartRow, int boxStartCol, int num){
    for (int row = 0; row < 3; row++)
        for (int col = 0; col < 3; col++)
            if (grid[row+boxStartRow][col+boxStartCol] == num) return true;
    return false;
}

bool findEmptyPlace(int &row, int &col){
    for (row = 0; row < N; row++)
        for (col = 0; col < N; col++)
            if (grid[row][col] == 0) return true;
    return false;
}

bool isValidPlace(int row, int col, int num){
    return !isPresentInRow(row, num) && !isPresentInCol(col, num) &&
           !isPresentInBox(row - row%3, col - col%3, num);
}

bool solveSudoku(){
    int row, col;
    if(!findEmptyPlace(row, col)) return true;
    for(int num = 1; num <= 9; num++){
        if(isValidPlace(row, col, num)){
            grid[row][col] = num;
            if(solveSudoku()) return true;
            grid[row][col] = 0;
        }
    }
    return false;
}

void sudokuGrid(){
    for (int row = 0; row < N; row++){
        for (int col = 0; col < N; col++){
            if(col == 3 || col == 6) cout << " | ";
            cout << grid[row][col] << " ";
        }
        if(row == 2 || row == 5){
            cout << endl;
            for(int i = 0; i

আউটপুট

সমাধান করা সুডোকু গ্রিড:

3 1 6 | 5 7 8 | 4 9 2
5 2 9 | 1 3 4 | 7 6 8
4 8 7 | 6 2 9 | 5 3 1
---------------------------
2 6 3 | 4 1 5 | 9 8 7
9 7 4 | 8 6 3 | 1 2 5
8 5 1 | 7 9 2 | 6 4 3
---------------------------
1 3 8 | 9 4 7 | 2 5 6
6 9 2 | 3 5 1 | 8 7 4
7 4 5 | 2 8 6 | 3 1 9
  1. C++-এ ভ্যালিড সুডোকু (Valid Sudoku) চেক করা

  2. C++-এ N x 3 গ্রিড রঙ করার পদ্ধতির সংখ্যা

  3. C++-এ Судোকু সলভার (Sudoku Solver)

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