आपके पास चार दूरी सेंसर के साथ थोड़ा सा रोबोट है। यह एक कमरे के लेआउट को जानता है, लेकिन इसमें ग्रिड ओरिएंटेशन पर लॉक करने में सक्षम होने के अलावा अन्य अभिविन्यास की कोई भावना नहीं है। आप यह पता लगाना चाहते हैं कि रोबोट रीडिंग पर आधारित कहां है, लेकिन यह सीमित सेंसर के कारण अस्पष्ट हो सकता है।
चुनौती का स्पष्टीकरण
आपको एक कमरे का लेआउट और चार घड़ी की दूरी की रीडिंग दी जाएगी, जो आपके और एक दीवार के बीच की कोशिकाओं की संख्या देगा। कमरे के बीच में दीवारें हो सकती हैं और ग्रिड के किनारे भी दीवारें हैं। रोबोट को एक दीवार के ऊपर नहीं रखा जा सकता है।
आपका उद्देश्य कमरे के भीतर उन सभी स्थानों को सूचीबद्ध करना है जिनमें रोबोट हो सकता है जो दिए गए रीडिंग देगा। ध्यान रखें कि रोबोट में अभिविन्यास का कोई मतलब नहीं है (ग्रिड पर 90 डिग्री कोण पर बंद होने के अलावा- यानी रोबोट कभी भी तिरछे या कुछ अन्य तिरछा कोण से उन्मुख नहीं होगा), इसलिए [1, 2, 3,] का पढ़ना 4], उदाहरण के लिए, [3, 4, 1, 2] को पढ़ने के समान है।
उदाहरण
इन उदाहरणों के लिए, सेल-निर्देशांक शीर्ष-बाएँ सेल से 0-अनुक्रमित (x, y) जोड़े के रूप में दिया जाएगा। एक वर्ग कोष्ठक सूची में दक्षिणावर्त क्रम में रीडिंग दी जाएगी। खाली कक्ष का प्रतिनिधित्व करने के लिए लेआउट दीवारों और अन्य पात्रों (आमतौर पर डॉट्स) के लिए पाउंड संकेतों का उपयोग करेंगे।
मामला एक
. . . .
. . . .
. . # .
. . . .
- [१, ०, २, ३] ==> (१, ०), (३, १)
- [0, 0, 3, 3] ==> (0, 0), (3, 0), (0, 3), (3, 3)
- [२, १, १, ०] ==> (०, २), (२, १)
- [१, १, २, २] ==> (१, १)
केस 2
# a . # a .
a # . . # a
. . # . . #
# . . # . .
a # . . # a
. a # . a #
- [०, ०, १, १] ==> ग्रिड पर प्रत्येक स्थिति जो एक बिंदु है
- [१, ०, ०, ०] ==> सभी ग्रिड पर हैं
केस 3
.
- [0, 0, 0, 0] ==> (0, 0)
केस 4
. # #
. . .
- [१, २, ०, ०] ==> (०, १)
- [0, 1, 2, 0] ==> (0, 1)
- [0, 0, 1, 0] ==> (0, 0)
- [१, ०, १, ०] ==> (१, १)
- [०, १, ०, १] ==> (१, १)
केस 5
. # . .
. . . .
. . # .
. . . .
- [२, १, १, ०] ==> (०, २), (२, १)
- [०, २, २, १] ==> (१, १)
- [१, ०, २, २] ==> (१, १)
- [0, 3, 0, 0] ==> (0, 0)
- [१, ०, १, १] ==> (१, २)
अन्य नियम
- इनपुट किसी भी सुविधाजनक प्रारूप में हो सकता है। इनपुट दीवारों और स्थानों का एक ग्रिड है और दक्षिणावर्त क्रम में चार दूरियों की सूची है।
- आउटपुट या तो सभी कोशिकाओं की एक सूची हो सकती है जो रीडिंग को संतुष्ट करती है या ग्रिड के एक संशोधित संस्करण को दिखाती है कि कौन से सेल रीडिंग को संतुष्ट करते हैं। आउटपुट का सटीक प्रारूप तब तक मायने नहीं रखता है जब तक यह उचित और सुसंगत हो। मान्य आउटपुट स्वरूप शामिल हैं, लेकिन इन तक सीमित नहीं हैं :
- प्रत्येक सेल के लिए एक लाइन प्रिंट करना एक ऑर्डर की गई जोड़ी के रूप में समन्वयित होता है
- साथ ग्रिड मुद्रण
.,#और!अंतरिक्ष, दीवारों, और संभावित स्थानों, क्रमशः के लिए। - आदेशित जोड़े की सूची लौटाते हुए
- अनुक्रमणिका की सूची लौटाता है
- रिक्त स्थान, दीवारों और संभावित स्थानों के लिए विभिन्न मूल्यों का उपयोग करके सूचियों की सूची लौटाएं
- रीडिंग होने वाली कोशिकाओं का प्रतिनिधित्व करने के लिए 1s का उपयोग करके 0s और 1s के एक मैट्रिक्स को वापस / प्रिंट करें। (दीवारों को शामिल करना आवश्यक नहीं है)
- एक बार फिर, यह सूची संपूर्ण नहीं है, इसलिए अन्य अभ्यावेदन तब तक मान्य हैं जब तक वे सुसंगत हैं और ग्रिड या सूची में हर संभव मान्य स्थान दिखाते हैं। यदि आप अनिश्चित हैं, तो एक टिप्पणी छोड़ दें और मुझे स्पष्ट करने में खुशी होगी।
- आप मान सकते हैं कि रीडिंग ग्रिड पर कम से कम एक स्थान से मेल खाती है।
- आप मान सकते हैं कि इनपुट ग्रिड आकार में कम से कम 1x1 है और इसमें कम से कम एक खाली जगह है।
- आप मान सकते हैं कि इनपुट ग्रिड प्रत्येक आयाम में 256 कोशिकाओं से बड़ा नहीं है।
- आप मान सकते हैं कि इनपुट ग्रिड हमेशा एक सही आयत है और दांतेदार नहीं है।
- यदि आपके प्रोग्राम में अमान्य इनपुट के लिए सेन आउटपुट देने के लिए कोई जुर्माना या बोनस नहीं है।
- यह कोड गोल्फ है, इसलिए सबसे छोटा कोड जीतता है।
Case 5काफी सही नहीं लगते हैं। मैं(0,2),(2,1),(1,3),(1,3), औरnothing।