खेल - मान लीजिए कि वर्गों का एक n × n सरणी है। इनमें से, कुछ वर्ग खाली हैं, कुछ ठोस हैं, और कुछ गैर-ठोस वर्ग पूर्णांक 1, 2, 3, ... द्वारा निर्धारित किए गए हैं। प्रत्येक पूर्णांक बोर्ड पर ठीक दो अलग-अलग वर्गों को बनाए रखता है या रखता है। खिलाड़ी का कार्य बोर्ड पर प्रत्येक पूर्णांक की दो घटनाओं को केवल क्षैतिज और ऊर्ध्वाधर आंदोलनों को लागू करने वाले सरल पथ की सहायता से जोड़ना है। किसी भी दो अलग-अलग रास्तों को एक दूसरे को काटने की अनुमति नहीं है। किसी भी पथ में कोई ठोस वर्ग शामिल नहीं हो सकता (ठोस वर्गों को किसी भी पथ पर प्रकट होने की अनुमति नहीं है)। अंत में, सभी गैर-ठोस वर्ग पथों से भरे जाने चाहिए।
एल्गोरिथम - किसी दिए गए बोर्ड आकार n × n के साथ एक वैध यादृच्छिक पहेली बनाने के लिए, हम पहले बोर्ड पर यादृच्छिक सरल पारस्परिक रूप से गैर-प्रतिच्छेदन पथ तैयार करते हैं। यदि कुछ पृथक वर्ग सभी उत्पन्न पथों के बाहर रहते हैं, तो इन पृथक वर्गों को ठोस (निषिद्ध) के रूप में चिह्नित करें। आगे हम पथों के अंतिम बिंदु और पहेली के रूप में ठोस वर्गों की सूची प्रदान करते हैं।
इस प्रकार हम पहले एक हल निकालते हैं, और फिर हल से पहेली निकालते हैं। पथ और ठोस वर्ग n × n बोर्ड को विभाजित या विभाजित करते हैं। हम इस विभाजन को उत्पन्न करने के लिए एक संघ-खोज डेटा संरचना लागू करते हैं। डेटा संरचना को बोर्ड पर n^2 वर्गों के सेट के सबसेट के साथ निपटाया जाता है।
छद्म कोड
-
बोर्ड पर बेतरतीब ढंग से वर्ग (ए, बी) और (सी, डी) का पता लगाएँ जैसे -
-
(ए, बी) और (सी, डी) एक दूसरे के पड़ोसी हैं, और
-
न तो (ए, बी) और न ही (सी, डी) अब तक निर्मित किसी भी पथ से संबंधित है। यदि पूरे बोर्ड पर वर्गों का ऐसा कोई जोड़ा नहीं मिलता है, तो वापसी / * यहाँ, (ए, बी) और (सी, डी) बनने वाले नए पथ पर पहले दो वर्ग हैं। */
-
-
(ए, बी) और (सी, डी) युक्त दो संघ-ढूंढें पेड़ों का एक संघ बनाएं।
-
तब तक दोहराएं जब तक वर्तमान पथ को बढ़ाया जा सके -
-
नाम बदलें (ए, बी) =(सी, डी)।
-
-
(ए, बी) के एक यादृच्छिक पड़ोसी वर्ग (सी, डी) का पता लगाएं, जैसे कि -
-
(सी, डी) अब तक उत्पादित किसी भी पथ से संबंधित नहीं है (वर्तमान एक सहित)
-
आंशिक रूप से निर्मित वर्तमान पथ पर एकमात्र पड़ोसी (सी, डी) है (ए, बी)।
-
-
यदि ऐसा कोई पड़ोसी (c, d) नहीं मिलता है, तो पथ को आगे नहीं बढ़ाया जा सकता है, इसलिए लूप को तोड़ दें
-
अन्यथा, दो संघ-ढूंढें वृक्षों का मिलन करें जिनसे (a, b) और (c, d) संबंधित हैं।
-
दो वर्गों के समापन बिंदु फ़्लैग सेट करें जो नए पथ की शुरुआत और समाप्ति पर हैं।
-
वापसी सफलता