Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में मान्य सुडोकू

मान लीजिए कि हमने एक 9×9 मैट्रिक्स दिया है जिसे सुडोकू कहा जाता है। कार्य यह जांचना है कि दिया गया सुडोकू पैटर्न मान्य है या नहीं।

सामान्य तौर पर, सुडोकू बोर्ड इस तरह दिखता है,

C++ में मान्य सुडोकू

सुडोकू के नियम -

  • प्रत्येक पंक्ति में 1-9 की श्रेणी में एक संख्या होती है

  • प्रत्येक कॉलम में 1-9 की श्रेणी में संख्याएँ होती हैं।

  • 3×3 के प्रत्येक ब्लॉक में अद्वितीय संख्याएँ होती हैं।

  • किसी विशेष पंक्ति में समान संख्या नहीं हो सकती।

  • किसी विशेष कॉलम में समान संख्या नहीं हो सकती।

उदाहरण के लिए

इनपुट-1 -

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

आउटपुट - सच।

स्पष्टीकरण - चूंकि सुडोकू मैट्रिक्स के अंदर की सभी संख्याएं एक मान्य सुडोकू के पैटर्न का पालन करती हैं, इसलिए आउटपुट सही है।

इस समस्या को हल करने का तरीका

प्रारंभ में हम जांच करेंगे कि दिए गए सुडोकू बोर्ड में अद्वितीय संख्याओं वाला कॉलम है या नहीं। फिर हम पंक्ति की जांच करेंगे। प्रत्येक 3*3 ब्लॉक में सभी अद्वितीय संख्याएँ होती हैं। हम प्रत्येक ब्लॉक पंक्ति और ब्लॉक कॉलम की जांच करेंगे यदि इसमें कोई संख्या डुप्लिकेट है तो हम झूठी वापसी करेंगे अन्यथा सत्य वापस आ जाएंगे।

  • सुडोकू बोर्ड के लिए 2-डी सरणी का इनपुट लें।

  • पंक्ति की जाँच करने के लिए एक बूलियन फ़ंक्शन है कि उसमें मौजूद तत्व अद्वितीय हैं या नहीं।

  • कॉलम की जांच करने के लिए एक बूलियन फ़ंक्शन है कि इसमें मौजूद तत्व अद्वितीय हैं या नहीं।

  • एक बूलियन फ़ंक्शन यह जांचने के लिए है कि ब्लॉक में मौजूद तत्व अद्वितीय हैं या नहीं।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
bool validSudoku(vector<vector<char>>& sudoku) {
   int row = 0, col = 0, i = 0, block = 0;
   int count[9];
   for (row = 0; row < 9; ++row){
      memset(count, 0, 9 * sizeof(int));
      for (col = 0; col < 9; ++col){
         if (sudoku[row][col] != '.')
            ++count[sudoku[row][col]-'1'];
      }
      for (i = 0; i < 9; ++i)
         if (count[i] > 1)
            return false;
   }
   for (col = 0; col < 9; ++col){
      memset(count, 0, 9 * sizeof(int));
      for (row = 0; row < 9; ++row){
         if (sudoku[row][col] != '.')
            ++count[sudoku[row][col]-'1'];
      }
      for (i = 0; i < 9; ++i)
         if (count[i] > 1)
            return false;
   }
   int block_row = 0, block_col = 0;
   for (block = 0; block < 9; ++block){
      block_row = (block / 3) * 3, block_col = (block % 3) * 3;
      memset(count, 0, 9 * sizeof(int));
      for (row = block_row; row < (block_row + 3); ++row)
      for (col = block_col; col < (block_col + 3); ++col)
         if (sudoku[row][col] != '.')
            ++count[sudoku[row][col] - '1'];
      for (i = 0; i < 9; ++i)
            if (count[i] > 1)
         return false;
   }
   return true;
}
int main(){
   vector<vector<char> > sudoku= {
      {'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'}
   };
   bool ans= validSudoku(sudoku);
   if(ans){
      cout<<"True"<<endl;
   } else {
      cout<<"false"<<endl;
   }
   return 0;
}

आउटपुट

True

  1. सी++ में सुडोकू सॉल्वर

    मान लीजिए कि हमारे पास सुडोकू ग्रिड है और हमें इस प्रसिद्ध संख्या भूलभुलैया समस्या, सुडोकू को हल करना है। हम जानते हैं कि सुडोकू एक 9 x 9 नंबर का ग्रिड है, और पूरे ग्रिड को भी 3 x 3 बॉक्स में विभाजित किया गया है सुडोकू को हल करने के लिए कुछ नियम हैं। इस समस्या को हल करने के लिए हमें अंक 1 से 9 तक

  1. C++ में मान्य कोष्ठक

    मान लीजिए कि हमारे पास एक व्यंजक है। व्यंजक के कुछ कोष्ठक हैं; हमें यह जांचना है कि कोष्ठक संतुलित हैं या नहीं। कोष्ठकों का क्रम (), {} और [] है। मान लीजिए कि दो तार हैं। ()[(){()}] यह मान्य है, लेकिन {[}] अमान्य है। कार्य सरल है; हम ऐसा करने के लिए स्टैक का उपयोग करेंगे। समाधान पाने के लिए हमें इन

  1. पायथन में मान्य सुडोकू

    मान लीजिए कि हमारे पास एक 9x9 सुडोकू बोर्ड है। हमें यह देखना होगा कि यह वैध है या अभी। केवल भरे हुए कक्षों को निम्नलिखित नियमों के अनुसार सत्यापित करने की आवश्यकता है - प्रत्येक पंक्ति में बिना दोहराव के 1-9 के अंक होने चाहिए। प्रत्येक कॉलम में बिना दोहराव के 1-9 के अंक होने चाहिए। ग्रिड के 9 (3x3)