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