बिल्डिंग हां, मुझे पता है कि यह कुछ भी नया नहीं है और वहां पहले से ही कई प्रश्न हैं (यहां तक कि इसका अपना टैग भी है), लेकिन मैं पूरी तरह से जावा में सुडोकू सॉल्वर बनाना चाहता हूं खुद को कोड लिखने के लिए प्रशिक्षण जो अधिक कुशल है।एक प्रभावी सुडोकू सॉल्वर
शायद किसी प्रोग्राम में ऐसा करने का सबसे आसान तरीका प्रत्येक कॉलम और पंक्ति के माध्यम से लूप पार्स का एक टन है, प्रत्येक सेल के संभावित मान एकत्रित करें, फिर केवल एक संभावना के साथ कोशिकाओं को बाहर निकालें (चाहे वे केवल हों 1 संख्या, या वे अपनी पंक्ति/कॉलम में एकमात्र सेल हैं जिसमें यह संख्या शामिल है) जब तक कि आपके पास हल की गई पहेली न हो। बेशक, कार्रवाई के एक बड़े विचार को हर प्रोग्रामर के दिमाग में लाल झंडा उठाना चाहिए।
जो मैं खोज रहा हूं वह इस चूसने वाले को सबसे कुशल तरीके से सुलझाने के तरीके के बारे में सोचने की पद्धति है (कृपया बहुत अधिक कोड शामिल न करने का प्रयास करें - मैं उस भाग को स्वयं समझना चाहता हूं)।
यदि संभव हो तो मैं गणितीय एल्गोरिदम से बचना चाहता हूं - यह बहुत आसान होगा और 100% मेरा काम नहीं होगा।
यदि कोई सुडोकू पहेली (चाहे मानव या कंप्यूटर द्वारा) को हल करने के लिए एक चरण-दर-चरण, कुशल विचार प्रक्रिया प्रदान कर सकता है, तो मैं सबसे ज्यादा खुश हूं :)। मैं कुछ ऐसी चीज की तलाश में हूं जो अस्पष्ट है (इसलिए यह एक चुनौती है), लेकिन मुझे शुरू करने के लिए पर्याप्त जानकारीपूर्ण (इसलिए मैं पूरी तरह से खो नहीं गया)।
बहुत धन्यवाद,
Justian मेयेर
संपादित करें:
मेरे कोड को देखते हुए, मैं सोच को मिला: क्या इन सुलझाने राज्यों के भंडारण के लिए संभावनाओं के कुछ होगा (यानी सुडोकू ग्रिड)। 2 डी Arrays और 3 डी Arrays दिमाग में आते हैं। कौन सा सबसे अच्छा हो सकता है? 2 डी सतह से प्रबंधन करना आसान हो सकता है, लेकिन 3 डी Arrays "बॉक्स"/"पिंजरे" संख्या भी प्रदान करेगा।
संपादित करें:
कोई बात नहीं। मैं एक 3 डी सरणी के साथ जा रहा हूँ।
इसके अलावा, अगर आप "केवल एक ही संभावना छोड़ने तक" खरपतवार के साथ जाते हैं तो भी आप कुछ सुडोकस को हल करने में सक्षम नहीं होंगे। "हार्डर" सुडोकस की एक अच्छी राशि है जहां आपको वास्तव में कुछ प्रकार की खोज करना पड़ता है इससे पहले कि आप यह सुनिश्चित कर सकें कि कौन सा नंबर कहां रखा जाए (डीएफएस/बीएफएस)। अन्यथा, प्रत्येक कॉलम के माध्यम से लूपिंग और इतने पर वास्तव में-भयानक या अक्षम नहीं है जब तक आप डेटा संरचनाओं को तदनुसार सेट अप करते हैं, लेकिन जैसा कि मैंने कहा था, यह हल नहीं होगा-सब-सुडोकस। – wasatz
@ वासत्ज़: हाँ, मैंने थोड़ा सा शोध किया है और पाया है। हालांकि, ऐसा लगता है कि इतने सारे लोगों को अधिक कुशल कार्य-आसपास मिल गए हैं, हालांकि मुझे इसे स्वीकार करने से नफरत है, मेरी समझ के स्तर से ऊपर है। –
@ जस्टियन, मैंने कुछ तेज़ googling किया और "नृत्य लिंक एल्गोरिदम" (http://en.wikipedia.org/wiki/Dancing_Links) का उपयोग करने के लिए कुछ सिफारिशें पाईं। मैंने पहले इस एल्गोरिदम को नहीं देखा है (और मेरे पास वास्तव में इस समय सही तरीके से पढ़ने का समय नहीं है) लेकिन यह आशाजनक लग रहा है। शायद कुछ देखने के लायक है? :) – wasatz