मैं सुडोकू पहेली कैसे बना सकता हूं?


17

मैं एक सुडोकू पहेली जनरेटर बनाने की कोशिश कर रहा हूँ। यह मेरी अपेक्षा से बहुत अधिक कठिन है और जितना अधिक मैं इसमें उतरता हूँ, यह उतना ही कठिन होता जाता है!

मेरा वर्तमान तरीका समस्या को 2 चरणों में विभाजित करना है:

  1. एक पूर्ण (हल) सुडोकू पहेली उत्पन्न करें।
  2. सॉल्व करने योग्य होने तक नंबर निकालें और इसका केवल 1 समाधान है।

चरण 1 में, जब से मैं एक क्रूर बल विधियों का उपयोग कर रहा हूं, मैं कुछ रन टाइम मुद्दों का सामना कर रहा हूं। क्या पूर्ण सुडोकू पहेली में भरने का एक इष्टतम तरीका है?

चरण 2 में, मुझे हल किए गए सुडोकू को "puzzlize" करने के लिए किस तरह के एल्गोरिथ्म का उपयोग करना चाहिए?


इस सवाल में कुछ जानकारी है कि आप पहेलियाँ कैसे उत्पन्न कर सकते हैं
शाफ़्ट सनकी

3
यह प्रश्न
पज़्लिंग

जवाबों:


30

IOS ऐप स्टोर पर मेरे पास एक शीर्ष विक्रय सुडोकू गेम है। यहां बताया गया है कि मैंने पहेलियाँ कैसे बनाईं।

पहले मेरे पास एक पहेली जनरेटर एप्लिकेशन है। लेकिन यह गेम के कोड का हिस्सा नहीं है। यह एक स्टैंड अलोन ऐप है जिसका उपयोग मैं पहेलियाँ बनाने के लिए करता हूँ। यह अत्यधिक संशोधित है, इसलिए मैं इसे विभिन्न पैटर्न प्रकार, कठिनाई रेटिंग, givens की संख्या आदि बनाने के लिए सेट कर सकता हूं, पहेलियाँ उत्पन्न करना और एक सुसंगत कठिनाई स्तर प्राप्त करना मक्खी पर करना मुश्किल है और एक खिलाड़ी की प्रतीक्षा में अधिक समय लगता है। तो, मैं उत्पन्न करता हूं जिसे मैं "सीड पज़ल्स" कहता हूं और यही वह चीज़ है जो गेम कोड द्वारा उपयोग की जाती है ताकि लोग जो पज़ल बनाते हैं वह उत्पन्न हो।

मैं यहाँ एक जनरेटर को कोड करने के तरीके का जवाब नहीं दे रहा हूँ। आप गूगल और टन पहेली जनरेटर कोड ऑनलाइन पा सकते हैं। वहाँ शुरू करो। लेकिन एक अच्छा खेल बनाने के लिए आपको एक अच्छा खेल बनाने की आवश्यकता है। मेरा खेल मक्खी पर पहेली उत्पन्न नहीं करता है।

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

पहेलियाँ स्ट्रिंग्स हैं, 162 वर्ण लंबे, संख्याओं के साथ 81 वर्ण और डैश या डॉट्स जहां रिक्त स्थान होने जा रहे हैं, फिर समाधान के साथ एक और 81। फिर प्रत्येक आंकड़े के लिए कॉलम, जैसे कि कितने एकल, युगल, आदि।

सभी पीढ़ी सत्रों से मेरा आउटपुट कॉलम के रूप में आँकड़ों के साथ सीमांकित सीमांकित रेखाएँ हैं। मैं शायद १०,००० पहेलियाँ ले जाऊँगा, उन्हें एक्सेल में लाऊँगा, और उन्हें कठिनाई से हल करूँगा। फिर उन्हें गेम बोर्ड पर देखने के लिए एक ऐप में लाएं। मैं उन्हें दृश्य अपील और पहेली के दृश्यमान पैटर्न के लिए भी देखता हूं। फिर मैं उन लोगों से चुनता हूं।

मैं उन्हें बीज पहेली कहता हूं और यहां मेरा मतलब है। एक सुडोकू खेल में नंबर वास्तव में सिर्फ टोकन हैं। संख्या 1-9 होने के बजाय वे रंग या प्रतीक या अक्षर हो सकते हैं। तो मेरे बीज पहेली संख्या नहीं हैं वे अक्षर एआई हैं। प्रत्येक बीज पहेली को खेलने योग्य पहेली बनाने के लिए मक्खी पर बदल दिया जाता है:

  1. संख्या / टोकन यादृच्छिक करें। जब मैं पत्र को वापस 1-9 की संख्या में बदल देता हूं तो लुकअप टेबल यादृच्छिक हो जाती है। मतलब यह है कि हमेशा एक नहीं है। यह अकेले प्रत्येक पहेली पर लगभग 300,000 भिन्नताएं बनाता है।
  2. पहेली को 90, 180 या 270 डिग्री तक घुमाएं। यह 4 और विविधताओं को जोड़ता है।
  3. पहेली को क्षैतिज रूप से, लंबवत, या दोनों पर फ़्लॉप करें। यह 4 और विविधताओं को जोड़ता है।

प्रत्येक बीज पहेली इसलिए 5,806,080 बदलाव कर सकती है। मैंने असली खिलाड़ियों के साथ इस क्षेत्र में परीक्षण किया है। लोग नहीं जानते कि वे अनिवार्य रूप से एक ही पहेली खेल रहे हैं। यह वास्तव में असंभव है। केवल अगर वे नोटिस कर रहे थे कि पैटर्न हर बार समान होते हैं। लेकिन 100 अलग-अलग बीजों के साथ कोई भी नोटिस नहीं करेगा। मेरे खेल के एक लाख उपयोगकर्ता नहीं हैं। मैंने इसे सॉल्वर ऐप्स के साथ भी टेस्ट किया है। एक सॉल्वर ऐप एक पहेली को उसी तरह से हल नहीं करेगा जब इसे घुमाया या फ्लॉप किया जाएगा। यह कभी-कभी इसे एक अलग कठिनाई रेटिंग के रूप में भी विश्लेषण करेगा भले ही यह तकनीकी रूप से एक ही पहेली हो।

हालाँकि, बिग बैड सुडोकू बुक में 5 कठिनाई स्तरों में से 1000 के बीज पहेली हैं, और कई पहेली पैटर्न प्रकार हैं। इसका मतलब है कि मेरे खेल में अरबों पहेलियां हैं। हर 10,000 बीज पहेली के साथ 58,060,800,000 अलग-अलग पहेलियाँ हैं।

सुडोकू बुक संस्करण 4 में (2016 के कारण) मैंने उन 58 बिलियन में से एक सटीक पहेली को निर्दिष्ट करने और प्रत्येक खिलाड़ी के डिवाइस पर एक ही पहेली प्राप्त करने में सक्षम होने का एक तरीका निकाला।


बहुत उपयोगी पोस्ट। क्या आप किसी भी तरह से जांचते हैं कि क्या आपके द्वारा उत्पन्न बीज अन्य बीजों से बनाया जा सकता है, जिसका अर्थ है कि आपके पास समान बीज हैं?
वीएलएएस

हाँ। मैं उन सभी को टेक्स्टमेट में छोड़ता हूं और एक तरह से करता हूं। फिर डुप्लिकेट निकालें। मुझे नहीं लगता कि यह कभी कोई हटा दिया गया है। बीज बिलकुल अनूठे हैं। दो अलग-अलग बीजों से एक ही पहेली बनाना असंभव है। किसी दिन मैं सटीक प्रक्रिया दिखाऊंगा, लेकिन अभी नहीं जब मैं अभी भी अपने तरीकों से लाभ उठा रहा हूं। :)
बैजवेल 21

वास्तव में मेरी पूरी प्रक्रिया यहाँ बहुत सुंदर है।
बैडवेल

2
+1 इस अंतर्दृष्टि के लिए कि संख्याएं केवल टोकन हैं और जिस तरह से आप विविधताएं बना सकते हैं वह केवल अक्षरों को निर्दिष्ट संख्याओं को बदलना है।
एस। मिशेल

वास्तव में उपयोगी जवाब! चूंकि आपके पास 3 कॉलम और 3 पंक्तियाँ हैं, इसलिए आपको 4 और वेरिएंट जेनरेट करने के लिए मध्य स्तंभ को बाईं या दाईं ओर और मध्य पंक्ति को ऊपर या नीचे ले जाने में सक्षम होना चाहिए। और पहेली को लंबवत रूप से फ़्लिप करने या क्षैतिज रूप से फ़्लॉप करने के बजाय, आप केवल 4 और वेरिएंट के लिए बाएँ और दाएँ कॉलम (और ऊपर और नीचे की पंक्तियों) का व्यापार कर सकते हैं। इसलिए मुझे लगता है कि आपको एक बीज से 43 मिलियन भिन्नताएं मिलनी चाहिए।
रोजर_एस 19

4

चरण 1 में () एक पूर्ण (सॉल्व्ड) सुडोकू पहेली उत्पन्न करें, क्योंकि मैं एक क्रूर बल पद्धति का उपयोग कर रहा हूं, मैं कुछ रन टाइम मुद्दों का सामना कर रहा हूं। क्या पूर्ण सुडोकू पहेली में भरने का एक इष्टतम तरीका है?

एक पूर्ण सुडोकू पहेली भरने का एक आसान तरीका है - समूह भरना और परिपत्र बदलाव।

  1. नौ अलग-अलग संख्याओं के साथ पहली पंक्ति भरें।
  2. दूसरी पंक्ति भरें जो तीन स्लॉट द्वारा पहली पंक्ति की एक पारी है।
  3. तीसरी पंक्ति भरें जो तीन स्लॉट द्वारा दूसरी पंक्ति की एक पारी है।
  4. चौथी पंक्ति को भरें जो एक स्लॉट द्वारा तीसरी की एक पारी है।


line 1: 8 9 3  2 7 6  4 5 1
line 2: 2 7 6  4 5 1  8 9 3 (shift 3)
line 3: 4 5 1  8 9 3  2 7 6 (shift 3)

line 4: 5 1 8  9 3 2  7 6 4 (shift 1)
line 5: 9 3 2  7 6 4  5 1 8 (shift 3)
line 6: 7 6 4  5 1 8  9 3 2 (shift 3)

line 7: 6 4 5  1 8 9  3 2 7 (shift 1)
line 8: 1 8 9  3 2 7  6 4 5 (shift 3)
line 9: 3 2 7  6 4 5  1 8 9 (shift 3)

उपयोगकर्ता को स्पष्ट पैटर्न को नोट करने से रोकने के लिए, पंक्तियों और स्तंभों के क्रम को यादृच्छिक बनाने के लिए एक अच्छा विचार हो सकता है ताकि अब कोई पैटर्न न हो। जब तक प्रत्येक पंक्ति / स्तंभ में सभी 9 नंबर एक परमाणु इकाई के रूप में एक साथ चलते हैं, तब तक सुडोकू बोर्ड हमेशा मान्य रहेगा।

आपको पूर्ण रूप से सुडोकू पहेली मिलती है। अधिक जानकारी के लिए, आप "सुडोकू बनाएं" खोज सकते हैं।


3

यह बहुत मुश्किल नहीं है, बशर्ते कि आपके पास एक सुडोकू सॉल्वर हो।

सुडोकू सॉल्वर बनाना एक कठिन / दिलचस्प समस्या है, इसलिए इसे अलग प्रश्न के लिए सहेजना सबसे अच्छा है। या फिर आप पढ़ सकते हैं इस और देखो तुम कैसे जाना।

  1. हल की गई पहेली उत्पन्न करने के लिए, बस एक खाली बोर्ड पर सॉल्वर चलाएं। एकमात्र चेतावनी यह है कि आपको "अनुमान" को यादृच्छिक रूप से उपयोग करना चाहिए, अन्यथा आप हर बार एक ही पहेली के साथ समाप्त हो सकते हैं। यही है, किसी बिंदु पर एक सेल के लिए सॉल्वर एक नंबर की कोशिश करेगा; यह इस क्रम में कोशिश कर सकता है: 1, 2, 3, 4, ...और जो काम करता है उसे पहले उठा ले। आपको उस आदेश में फेरबदल करने की आवश्यकता है ताकि यह कोशिश करे, कि,4, 7, 2, 9, ... ,। यह प्रक्रिया आपके सॉल्वर जितनी तेज़ होनी चाहिए।
  2. संख्याओं को निकालने के लिए, इस एल्गोरिथ्म का उपयोग करें:
    • आप पहले हटाने की कोशिश नहीं की है एक यादृच्छिक संख्या चुनें
    • नंबर निकालें, अपने सॉल्वर को अतिरिक्त स्थिति के साथ चलाएं कि वह यहां हटाए गए नंबर का उपयोग नहीं कर सकता है
    • यदि सॉल्वर कोई समाधान ढूंढता है, तो आप संख्या को निकाल नहीं सकते
    • तब तक दोहराएं, जब तक आपने पर्याप्त संख्याएं नहीं हटा दी हैं (या आप कोई और अधिक नहीं निकाल सकते)

यह एक बहुत ही सरल (और भोली) विधि है, इसलिए इसकी कोई गारंटी नहीं है कि आपको एक निश्चित कठिनाई की पहेलियाँ मिलेंगी - जो कि लापता संख्याओं की संख्या से अलग है - या यदि आप चाहें तो संख्याओं को हटा भी सकते हैं। आशा है कि यह वैसे भी मदद करता है।


सुनिश्चित करें कि सॉल्वर एक ही राज्य से कई समाधान नहीं पा सकता है। आम तौर पर केवल एक समाधान होना चाहिए। इसके अलावा, आप जांच कर सकते हैं कि कठिनाई को निर्धारित करने के लिए समाधान खोजने के लिए सॉल्वर को कौन से तार्किक कदम उठाने की जरूरत है, जैसे कि क्या इसे एक्स-विंग रणनीति या ... का उपयोग करने की आवश्यकता है?
ऑरिजनल

1
@OriginalDaemon आपके पहले बिंदु के बारे में, यह तीसरे बिंदु में शामिल है: यदि उस नंबर को दूसरे समाधान में निकालते हैं, तो वापस जाएं।
congusbongus

0

मैं सिर्फ इस वेबपेज को इंगित करना दिलचस्प समझता हूं , क्योंकि इसने हमारे प्रॉजेक्ट के विकास में बहुत मदद की। एक अद्वितीय समाधान के साथ सुडोकू बनाना एक सरल कार्य से बहुत दूर है। लिंक में आप पा सकते हैं कि कैसे लेखक (उन्होंने वास्तव में एक महान काम किया है, इसका कोई मुझे नहीं!), कई अलग-अलग रणनीतियों को मिला। आप अपने खुद के सुडोकू सॉल्वर उत्पन्न करने के लिए एक विचार कर सकते हैं।

अब, विषय के साथ जा रहा है, बस द्वारा भी इसी तरह के सुडोकु उत्पन्न करने का एक तरीका है

  1. पंक्तियों का क्रमांकन।
  2. अन्य सरल समाधान है, न्यूनतम 17 अंकों के एक भरने वाले सुडोकू के साथ शुरू करने के लिए (इसके एक अद्वितीय समाधान खोजने के लिए सिद्ध न्यूनतम), और अलग-अलग रणनीतियों का पालन करके भरें (जैसे पिछले लिंक में रणनीतियों को कठिनाइयों पर विभाजित किया गया है, आप कुछ ऐसा ही कर सकते हैं), जब तक आप अद्वितीय समाधान तक नहीं पहुंच जाते।
  3. एक गणितज्ञ की एक सूची थी जिसमें 16 शुरुआती अंक वाले अद्वितीय समाधान सुडोकू को खोजने की कोशिश की गई, जिसमें 17 अंकों वाले सुडोकु की एक बड़ी सूची थी। मुझे याद है कि अगर उसे किसी भी तरह की कॉपी लिखना है, लेकिन मुझे पूरा यकीन है, अगर आप उसे अन्य 17 अद्वितीय समाधान की पेशकश कर सकते हैं तो सुडोकू आपको अपने डेटा का उपयोग करने से अधिक खुशी होगी।

एल्गोरिदम के साथ चियर्स और शुभकामनाएँ: डी


हम्म, लिंक सुडोकू सॉल्वर के लिए है, जनरेटर के लिए नहीं।
ग्रीनोल्डमैन

@ग्रीनॉल्डमैन हाँ, ITS ए सॉल्वर। मुझे लगता है कि उपयोगकर्ता के लिए यह दिलचस्प है क्योंकि वह किसी नंबर को हटाने, और हल करने के लिए वर्तमान विधि है। यह लिंक तेजी से हल करने के लिए रणनीतियाँ देता है वह है सुडोकू की
डेविड सेंचेज

0

मेरा सॉल्वर जानवर बल का उपयोग कर रहा है, और 20 मिलीसेकंड के भीतर समाधान पा सकता है। ऊपर वर्णित विलोपन विधि का उपयोग करके, मेरा जनरेटर 200 मिलीसेकंड के भीतर एक पहेली का निर्माण करता है।

यह आमतौर पर लगभग 24-34 अंकों के साथ एक पहेली उत्पन्न करता है, और मुझे अभी भी नहीं पता है कि दुनिया में वे 17 अंकों की पहेली का उत्पादन कैसे करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.