(यह चुनौती बहुत समान है, लेकिन इस मौजूदा चुनौती में अतिरिक्त जटिलताएं हैं।)
एक 2-आयामी कमरे की कल्पना करें, जहां दीवारें सपाट दर्पणों से युक्त हैं।
अचानक, प्रकाश का एक बीम कमरे में घुसता है, जहां दीवार का एक टुकड़ा गायब है! लाइटबीम कमरे के चारों ओर नृत्य करती है, दीवार के दर्पणों से परावर्तित हो जाती है, और अंततः कमरे को फिर से छोड़ देती है।
तर्क
: आप 5 चर दिया जाता है डब्ल्यू, एच, पहला, दूसरा और जेड ।
अब, उनका क्या मतलब है?
डब्ल्यू, एच कमरे का आकार (दीवारों सहित) है, जिसमें डब्ल्यू चौड़ाई और एच ऊंचाई है।
एक्स, वाई समन्वय है कि दीवार में छेद है। आप मान सकते हैं कि यह हमेशा एक दीवार टाइल पर स्थित है। निर्देशांक 0-आधारित हैं, जिसमें X- अक्ष दाईं ओर और Y- अक्ष नीचे की ओर इंगित करता है।
जेड एकल वर्ण, दिशा कि प्रकाश या तो कमरे में गिर जाता है, का प्रतिनिधित्व करता है \या /।
कमरे का निर्माण निम्न वर्णों से किया जाना है:
|क्षैतिज दीवारों के लिए-ऊर्ध्वाधर दीवारों के लिए+कोनों के लिए
उदाहरण: (W = 7, H = 4)
+-----+
| |
| |
+-----+
अब जब हमारे पास एक कमरा है, तो दीवार की टाइलों में से एक को नष्ट करने देता है, इसलिए प्रकाश की किरण कमरे में गिरती है। प्रकाश की बीम विकर्ण लाइनों, का प्रतिनिधित्व करती हैं \और /अक्षर।
आइए \प्रकाश की किरण के साथ दीवार टाइल को X = 2, Y = 0 पर बदलें ।
+-\---+
| |
| |
+-----+
जब तक यह एक दर्पण दीवार से टकराता है, आने वाली रोशनी पूरे कमरे में तिरछी यात्रा करती है। यदि एक दीवार को मारा जाता है, तो दिशा दीवार के अक्ष के साथ अंदर जाती है, और बीम पर यात्रा होती है।
+-\---+
|\ \/\|
| \/\/|
+-----+
इस उदाहरण में, प्रकाश किरण एक ऐसे बिंदु पर पहुंच जाती है, जहां दीवार का एक कोना टकराता है, जो इस बात को संक्रमित करता है कि किरण पूरी तरह से उलट जाती है और सभी तरह से वापस यात्रा करती है, अंत में कमरे को छोड़कर।
आपका कार्य
एक प्रोग्राम लिखें जो कमरे और प्रकाश किरण के पूरे मार्ग को प्रिंट करता है, जब तक कि यह कमरे को फिर से नहीं छोड़ता या एक अनंत लूप में दोहराता है।
इनपुट
इनपुट किसी भी उचित प्रारूप में प्राप्त किया जा सकता है, लेकिन इसमें 4 पूर्णांक डब्ल्यू, एच, एक्स, वाई और चरित्र जेड शामिल हैं, उदाहरण के लिए [10, 8, 0, 3, \]।
आप मान सकते हैं कि:
- डब्ल्यू, एच> = ३
- X, Y हमेशा एक दीवार पर स्थित होते हैं
- जेड केवल मूल्यों को नियंत्रित करने में सक्षम हो जाएगा
\और/।
उत्पादन
आप यह तय कर सकते हैं कि आप एक स्ट्रिंग लौटाते हैं या सीधे आउटपुट stdout।
इसमें कमरे की दीवार और प्रकाश किरण (ऊपर ASCII वर्णों द्वारा परिभाषित) को शामिल करना है।
नियम
- मानक खामियों को मना किया जाता है।
- यह कोड-गोल्फ है , इसलिए किसी भी भाषा में बाइट्स में सबसे छोटा कोड है, जीतता है।
- इस चुनौती के प्रकाशन से पहले बनाई गई सभी कोडिंग भाषाओं की अनुमति है।
उदाहरण
इनपुट: [5, 4, 2, 0, /]
+-/-+
|/ /|
|\/ |
+---+
इनपुट: [20, 3, 0, 1, \]
+------------------+
\/\/\/\/\/\/\/\/\/\|
+------------------+
इनपुट: [10, 8, 0, 3, \] (अनंत लूप का उदाहरण जो कमरे को फिर से नहीं छोड़ेगा।)
+--------+
|/\/\/\/\|
|\/\/\/\/|
\/\/\/\/\|
|\/\/\/\/|
|/\/\/\/\|
|\/\/\/\/|
+--------+
सौभाग्य!