मैंने सुडोकस उत्पन्न करने के लिए एक एल्गोरिदम बनाया, लेकिन यह बहुत अक्षम था। प्रत्येक पहेली को उत्पन्न करने में कुछ मिनट लगते थे। तो अब मैं इसे फिर से इष्टतम तरीके से लिखने की कोशिश कर रहा हूं। लेकिन मुझे कुछ समस्याएं आ रही हैं जिनकी मुझे मदद चाहिए।सुडोकू जनरेटर एल्गोरिदम
- दो aproaches, खाली ग्रिड के साथ शुरू और संख्याओं को जोड़ने, तो जाँच अगर यह व्याख्या करने योग्य है रहे हैं। दूसरा दृष्टिकोण सभी 81 अंकों के साथ पूर्ण मान्य ग्रिड बनाना है और तब तक हटाएं जब तक कि हम शेष संख्याओं की संख्या से खुश न हों और यह अभी भी हल करने योग्य है।
सबसे पहले मैंने पहले दृष्टिकोण का उपयोग किया लेकिन अब मैं दूसरा उपयोग करने जा रहा हूं क्योंकि मुझे लगता है कि यह अधिक प्रभावी है (हम वैध पहेली से शुरू कर रहे हैं जो हल करने योग्य होने की गारंटी है)। मैं सही हूं कि दूसरा दृष्टिकोण बेहतर है?
जब मैं पूर्ण जनसंख्या ग्रिड उत्पन्न करने की कोशिश कर रहा हूं तो मैं कठिनाइयों में भाग रहा हूं। मेरा एल्गोरिदम है:
- प्रत्येक कोशिकाओं के लिए उम्मीदवार सेट करें। प्रारंभ में वे संख्या 1 से 9 तक हैं।
- मूल्य के बिना यादृच्छिक सेल चुनें।
- उस सेल से यादृच्छिक उम्मीदवार का चयन करें और इसे सेल मान के रूप में असाइन करें। अन्य उम्मीदवारों को त्याग दिया जाता है।
- अब प्रत्येक पंक्ति, सेल और वर्ग सौंपा सेल से संबंधित के लिए मैं इन उम्मीदवारों से सेल का मान निकालने के लिए, इसलिए प्रत्येक संख्या एक पंक्ति/स्तंभ/वर्ग
- दोहराएँ
इस में अद्वितीय है तकनीक डुप्लिकेट संख्याओं के बिना यादृच्छिक ग्रिड की गारंटी देता है। हालांकि, ज्यादातर बार, जब मैं नियुक्ति के किसी भी नियम को तोड़ने के लिए संघर्ष नहीं करता - जैसे खाली कोशिकाएं जहां सभी उम्मीदवारों को हटा दिया गया है आदि और मुझे शुरू करने की आवश्यकता है। प्लेसमेंट के नियमों को तोड़ने और यादृच्छिक संख्याओं को तोड़ने के बिना संख्याओं के साथ पूरे ग्रिड को भरने के लिए और अधिक सुरुचिपूर्ण/कुशल तरीका है?
धन्यवाद।