यह चुनौती पूरी तरह से ऑल लाइट से प्रेरित है , जिसे सोलगिट गेम्स द्वारा विकसित किया गया है।
चुनौती
आप एक इलेक्ट्रीशियन हैं, और बैटरी को सभी रोशनी को तार करना आपका काम है।
- एक ग्रिड में रोशनी और बैटरी रखी जाती है।
- आप किसी प्रकाश या बैटरी को निकटतम प्रकाश या बैटरी से उसके उत्तर, दक्षिण, पूर्व और पश्चिम से जोड़ सकते हैं।
- बैटरी में कोई भी कनेक्शन हो सकता है।
- प्रत्येक प्रकाश निर्दिष्ट करता है कि उसे कितने कनेक्शनों की आवश्यकता है। आपको वास्तव में उस प्रकाश से कई कनेक्शन बनाने चाहिए ।
- आप दो लाइट (या लाइट और बैटरी) के बीच सिंगल कनेक्शन या डबल कनेक्शन बना सकते हैं।
- तार पार नहीं कर सकते।
- प्रत्येक प्रकाश से बैटरी तक का मार्ग होना चाहिए।
- कम से कम एक वैध समाधान मौजूद होने की गारंटी है।
बैटरी और प्रत्येक प्रकाश की स्थिति को देखते हुए, और प्रत्येक प्रकाश को जितने कनेक्शन की आवश्यकता होती है, उन दोनों के बीच कनेक्शन को आउटपुट करता है जो इन गुणों को स्वीकार करते हैं।
विन कंडीशन
यह कोड-गोल्फ है , इसलिए प्रत्येक भाषा में सबसे छोटा कोड जीतता है।
परीक्षण के मामलों
I / O हमेशा की तरह लचीला है।
इनपुट के लिए मैं ग्रिड के आकार का 2d सरणी का उपयोग करूंगा, जो रोशनी के लिए सकारात्मक पूर्णांक, रिक्त स्थान के लिए शून्य और बैटरी के लिए -1 स्टोर करता है। एक और अच्छा विकल्प रोशनी की एक सूची हो सकती है, जहां एक प्रकाश एक टपल है जिसमें प्रकाश की स्थिति और आवश्यक कनेक्शन की संख्या होती है।
आउटपुट के लिए मैं कनेक्शनों की एक सूची का उपयोग करूंगा, जहां एक कनेक्शन एक टपल है जिसमें प्रारंभिक स्थिति और समाप्ति स्थिति होती है। यदि एक कनेक्शन दोगुना हो जाता है, तो मेरे पास सूची में उनमें से 2 होंगे (एक अन्य विकल्प इस पैरामीटर को ट्यूपल में शामिल करने के लिए है)। एक और अच्छा विकल्प किसी प्रकार का ग्रिड लेआउट हो सकता है।
यदि आप एक समन्वय प्रणाली का उपयोग कर रहे हैं, तो आप आरंभिक सूचकांक और जहाँ से आप अनुक्रमणिका निर्दिष्ट कर सकते हैं। मेरे उदाहरण 0-अनुक्रमित होंगे और शीर्ष बाएं कोने (पंक्ति, स्तंभ) के रूप में (0, 0) का उपयोग करेंगे। (मैं {} का उपयोग केवल दूसरे प्रकार के सीमांकक को शुरू करने के लिए कर रहा हूं ताकि यह पढ़ना आसान हो, इसलिए नहीं कि वे सेट हैं।)
यहाँ परीक्षण मामलों का एक ग्राफिकल दृश्य है: टेस्ट 1-12
टेस्ट 1:
[-1 | 0 | 1 ] => [{(0, 0), (0, 2)}]
टेस्ट 2:
[-1 | 0 | 2 ] => [{(0, 0), (0, 2)}, {(0, 0), (0, 2)}]
टेस्ट 3:
[-1 ]
[ 0 ] => [{(0, 0), (2, 0)), ((0, 0), (2, 0)}]
[ 2 ]
टेस्ट 4:
[ 1 | 0 |-1 | 0 | 2 ] => [{(0, 0), (0, 2)}, {(0, 2), (0, 4)}, {(0, 2), (0, 4)}]
टेस्ट 5:
[ 2 ]
[ 0 ]
[-1 ] => [{(0, 0), (2, 0)}, {(0, 0), (2, 0)}, {(2, 0), (4, 0)}]
[ 0 ]
[ 1 ]
टेस्ट 6:
[ 1 | 0 | 0 ]
[ 0 | 0 | 0 ] => [{(0, 0), (2, 0)}, {(2, 0), (2, 2)}]
[ 2 | 0 |-1 ]
टेस्ट 7:
[ 4 | 0 | 0 |-1 ]
[ 0 | 0 | 0 | 0 ] => [{(0, 0), (0, 3)}, {(0, 0), (0, 3)},
[ 2 | 0 | 0 | 0 ] {(0, 0), (3, 0)}, {(0, 0), (3, 0)}]
टेस्ट 8:
[ 2 | 0 |-1 | 0 | 2 ] [{(0, 0), (0, 2)}, {(0, 0), (0, 2)},
[ 0 | 0 | 0 | 0 | 0 ] => {(0, 2), (0, 4)}, {(0, 2), (0, 4)},
[ 0 | 0 | 1 | 0 | 0 ] {(0, 2), (2, 2)}]
टेस्ट 9:
[ 0 | 0 | 2 | 0 | 0 ]
[ 0 | 0 | 0 | 0 | 0 ]
[ 1 | 0 |-1 | 0 | 1 ] => [{(0, 2), (2, 2)}, {(0, 2), (2, 2)}, {(2, 0), (2, 2)},
[ 0 | 0 | 0 | 0 | 0 ] {(4, 2), (2, 2)}, {(2, 4), (2, 2)}, {(2, 4), (2, 2)}]
[ 0 | 0 | 2 | 0 | 0 ]
टेस्ट 10:
[-1 | 2 | 3 | 2 ] => [{(0, 0), (0, 3)}, {(0, 0), (0, 3)},
{(0, 0), (0, 3)}, {(0, 0), (0, 3)}]
टेस्ट 11:
[-1 | 0 | 0 | 0 ]
[ 3 | 0 | 0 | 0 ]
[ 3 | 0 | 0 | 3 ] => [{(0, 0), (1, 0)}, {(1, 0), (2, 0)}, {(1, 0), (2, 0)},
[ 0 | 0 | 0 | 0 ] {(2, 0), (2, 3)}, {(2, 3), (4, 3)}, {(2, 3), (4, 3)}]
[ 0 | 0 | 0 | 2 ]
टेस्ट 12:
[ 2 | 0 | 0 ] [{(0, 0), (1, 0)}, {(0, 0), (1, 0)}, {(1, 0), (1, 1)},
[ 3 |-1 | 0 ] => {(1, 1), (2, 1)}, {(1, 1), (2, 1)}, {(2, 0), (2, 1)},
[ 2 | 5 | 1 ] {(2, 0), (2, 1)}, {(2, 1), (2, 2)}]
[1 | -1] [1 1]।