कहते हैं कि आपने देखा कि आपका दोस्त अपने Android फ़ोन में अपना पासवर्ड दर्ज करता है। आपको याद नहीं है कि उन्होंने कैसे पैटर्न बनाया है लेकिन आपको याद है कि पैटर्न कैसा दिखता है। संबंधित मित्र होने के नाते आप यह जानना चाहते हैं कि उनका पासवर्ड कितना सुरक्षित है। आपका काम उन सभी तरीकों की गणना करना है जो एक विशेष पैटर्न बनाया जा सकता है।
एंड्रॉइड पैटर्न कैसे काम करता है
नोड्स के 3x3 ग्रिड पर पैटर्न तैयार किए जाते हैं। एक पैटर्न में कोई भी स्क्रीन से अपनी उंगली उठाए बिना नोड्स की एक श्रृंखला का दौरा करता है। उनके द्वारा जाने वाला प्रत्येक नोड पिछले किनारे से एक किनारे से जुड़ा होता है। ध्यान रखने के दो नियम हैं।
आप एक से अधिक बार किसी एक नोड पर नहीं जा सकते हैं
हो सकता है कि एक बढ़त गैर-स्वीकृत नोड से न गुजरे
ध्यान दें कि, आमतौर पर प्रदर्शन करने के लिए बहुत कठिन है और इस प्रकार वास्तविक एंड्रॉइड लॉक संयोजनों में बहुत आम नहीं है, यह एक नाइट की तरह चलना संभव है । यही है, एक तरफ से एक गैर-आसन्न कोने या दूसरे रास्ते से जाना संभव है। ऐसी चाल को रोजगार देने वाले पैटर्न के दो उदाहरण हैं:
यहाँ इसका एक एनिमेटेड Gif प्रदर्शन किया जा रहा है।
एक पैटर्न हल करना
एक विशिष्ट पैटर्न कुछ इस तरह दिख सकता है:
इस तरह के एक साधारण पैटर्न के साथ यह दो तरीके हैं दो पैटर्न खींचते हैं। आप दोनों ढीले सिरों में से किसी पर भी शुरू कर सकते हैं और हाइलाइट किए गए नोड्स से दूसरे तक यात्रा कर सकते हैं। हालांकि यह कई पैटर्न के लिए सच है, विशेष रूप से यह है कि मनुष्य आमतौर पर इसे नियोजित करता है सभी पैटर्न के लिए सही नहीं है।
निम्नलिखित पैटर्न पर विचार करें:
दो तुरंत पहचानने योग्य समाधान हैं। ऊपरी बाएँ में एक शुरू:
और नीचे केंद्र में एक शुरू:
हालाँकि, क्योंकि एक पंक्ति को एक बिंदु से गुजरने की अनुमति दी जाती है, क्योंकि यह पहले ही चयनित हो चुका है और शीर्ष मध्य में शुरू होने वाला एक अतिरिक्त पैटर्न है:
इस विशेष पैटर्न में 3 समाधान हैं, लेकिन पैटर्न 1 और 4 समाधान [उद्धरण वांछित] के बीच कहीं भी हो सकते हैं ।
यहाँ प्रत्येक के कुछ उदाहरण दिए गए हैं:
1।
2।
3।
4।
आई / ओ
एक नोड को शून्य से नौ समावेशी, उनके स्ट्रिंग समकक्ष या एक से i (या A से I) के वर्णों के पूर्णांक के रूप में दर्शाया जा सकता है। प्रत्येक नोड में इनमें से एक सेट से एक अद्वितीय प्रतिनिधित्व होना चाहिए।
नोड निरूपण वाले एक आदेशित कंटेनर द्वारा एक समाधान का प्रतिनिधित्व किया जाएगा। नोड्स को उसी क्रम में आदेश दिया जाना चाहिए जिस क्रम से वे गुजरे हैं।
एक पैटर्न नोड्स के जोड़े के एक अनियंत्रित कंटेनर द्वारा दर्शाया जाएगा। प्रत्येक जोड़ी जोड़ी में दो बिंदुओं को जोड़ने वाली एक बढ़त का प्रतिनिधित्व करती है। पैटर्न अभ्यावेदन अद्वितीय नहीं हैं।
आप मानक इनपुट विधियों के माध्यम से इनपुट के रूप में एक पैटर्न प्रतिनिधित्व करेंगे और सभी संभव समाधानों का उत्पादन करेंगे जो मानक आउटपुट विधियों के माध्यम से एक ही पैटर्न बनाते हैं।
आप मान सकते हैं कि प्रत्येक इनपुट में कम से कम एक समाधान होगा और कम से कम 4 नोड्स कनेक्ट करेगा।
यदि आप बहुत इच्छा रखते हैं या भाषा चयन के लिए मजबूर हैं, तो आप किसी अनियंत्रित के स्थान पर एक ऑर्डर किए गए कंटेनर का उपयोग कर सकते हैं।
परीक्षण के मामलों
निम्न पैटर्न में व्यवस्थित नोड्स के साथ:
0 1 2
3 4 5
6 7 8
आज्ञा देना {...}
एक अव्यवस्थित कंटेनर हो, [...]
एक आदेश दिया कंटेनर हो, और (...)
एक जोड़ी हो।
निम्नलिखित जानकारी और आउटपुट मैच होना चाहिए
{(1,4),(3,5),(5,8)} -> {[1,4,3,5,8]}
{(1,4),(3,4),(5,4),(8,5)} -> {[1,4,3,5,8]}
{(0,4),(4,5),(5,8),(7,8)} -> {[0,4,5,8,7],[7,8,5,4,0]}
{(0,2),(2,4),(4,7)} -> {[0,1,2,4,7],[1,0,2,4,7],[7,4,2,1,0]}
{(0,2),(2,6),(6,8)} -> {[0,1,2,4,6,7,8],[1,0,2,4,6,7,8],[8,7,6,4,2,1,0],[7,8,6,4,2,1,0]}
{(2,3),(3,7),(7,8)} -> {[2,3,7,8],[8,7,3,2]}
{(0,7),(1,2),(1,4),(2,7)} -> {[0,7,2,1,4],[4,1,2,7,0]}
{(0,4),(0,7),(1,3),(2,6),(2,8),(3,4),(5,7)} -> {[1,3,4,0,7,5,8,2,6]}
{(1,3),(5,8)} -> {}
तस्वीरों के रूप में सभी परीक्षण मामलों का एक imgur एल्बम यहां पाया जा सकता है । पैटर्न लाल में नीले समाधान में हैं।
स्कोरिंग
यह कोड गोल्फ है। सबसे कम बाइट्स जीतता है।