मैं एक गेम एल्गोरिदम के लिए एक सुलभता कार्य बनाने की कोशिश कर रहा हूं। असल में एक ऐसा फ़ंक्शन जो किसी दिए गए गेम के लिए सही या गलत देता है, अगर यह हल करने योग्य है या नहीं।गेम एल्गोरिदम को हल करना (बटनिया, रोशनी-आउट संस्करण)
यह गेम Buttonia.com है (जो अभी तक एल्गोरिदम लागू नहीं करता है), एक प्रकार का रोशनी-आउट गेम। असल में आपके पास बटन का ग्रिड होता है, जिनमें से प्रत्येक दबाए जाने पर, इसके कुछ पड़ोसियों की स्थिति बदल देगा। वर्तमान में मैं एक यादृच्छिक गेम कॉन्फ़िगरेशन उत्पन्न करता हूं और फिर यथासंभव हेरिस्टिक को लागू करता हूं। शेष ब्रूट फोर्स सर्च द्वारा तय किया जाता है।
मेरी प्रगति अब तक मॉडल के मॉडल के लिए समीकरणों की एक प्रणाली बनाने के लिए थी। - (button_1 + button_2 + ... + button_X)% 2
button_A = 1: प्रत्येक बटन राज्य बार विषम संख्या में बदलने के लिए एक नीचे राज्य में समाप्त करने की जरूरत है के रूप में, यह समीकरण इस होगा है
बटन_एक्स के माध्यम से बटन_1 बटन_ए पर प्रभाव वाले बटनों के राज्य हैं। कुछ बटन तुरंत हल किए जा सकते हैं, अगर वे दूसरों पर निर्भर नहीं हैं। बाकी के लिए, मैं एक कॉन्फ़िगरेशन का प्रयास करता हूं जब तक कि मुझे कोई संघर्ष न हो और फिर ट्रैक न करें।
वर्तमान में यह एल्गोरिदम गेम की छोटी कॉन्फ़िगरेशन के लिए व्यावहारिक है। मैंने इसे 3x3 गेम से 10x10 के आकार तक परीक्षण किया है। जहां 6x6 व्यावहारिक खेल के लिए ऊपरी सीमा के पास है।
समीकरणों ने इसे व्यावहारिक बनाकर, ब्रूट-बल से खोज स्थान को काट दिया। समीकरणों की प्रणाली को हल करने का एक पूरी तरह से गणितीय तरीका हो सकता है। ascii में
नमूना 3x3 खेल (buttonia.com/?game=2964 से):
||#
-o-
+#|
Legend:
o = affect only self
- = affect left and right neighbors
| = affect above and below neighbors
+ = affect left, right, above and below neighbors
# = affect all 8 surrounding neighbors
समाधान, प्रेस इन: (0,0), (2,0), (1, 2), (0, 1), (1, 1), इस खेल के लिए (2,1)
समीकरण:
Button_0_0 = 1 - (0) % 2
Button_1_0 = 1 - (Button_2_0) % 2
Button_2_0 = 1 - (0) % 2
Button_0_1 = 1 - (Button_0_0 + Button_0_2 + Button_1_2) % 2
Button_1_1 = 1 - (Button_1_0 + Button_2_0 + Button_0_1 + Button_2_1 + Button_1_2) % 2
Button_2_1 = 1 - (Button_2_0 + Button_1_2 + Button_2_2) % 2
Button_0_2 = 1 - (Button_1_2) % 2
Button_1_2 = 1 - (Button_0_2) % 2
Button_2_2 = 1 - (Button_1_2) % 2
संभावित समाधान:
मॉड्यूलस की आवश्यकता से बचने के लिए गणितीय कार्यों को बदलना हमें बाईं ओर की ओर दाईं ओर शब्दों को स्थानांतरित करने देता है, जिससे हमें गॉसियन विधि के लिए आवश्यक साफ मैट्रिक्स सेटअप तैयार किया जाता है।
-1 = -1*B00 + 0*B10 + 0*B20 + 0*B01 + 0*B11 + 0*B21 + 0*B02 + 0*B12 + 0*B22
-1 = 0*B00 + -1*B10 + -1*B20 + 0*B01 + 0*B11 + 0*B21 + 0*B02 + 0*B12 + 0*B22
चर्चित यहाँ समाधान:: तो पहले दो समीकरणों क्रमशः बदल जाएगा Gaussian Elimination with custom operators
करीब हो रही है। लगभग पूर्ण समाधान पोस्ट करने के लिए लगभग तैयार: Inverting binary networks
क्या मुझे लगता है कि यह पता चलता है कि पता एक अश्लील साइट की तरह लगता है? =] –
मैं शर्त लगाता हूं कि कुछ पर्ल गुरु नियमित अभिव्यक्ति के साथ बाहर आ सकते हैं जो सभी ईमानदारी में समस्या xD – fortran
हल करता है, यह गेम बहुत मजेदार है, लेकिन आपको शीर्ष पर थोड़ा सा स्पष्टीकरण टेक्स्ट चाहिए, यह मुझे एक ले गया मुझे क्या करना है यह जानने के लिए मिनट या तो! = डी –