खैर, GitHub, Reddit और अन्य साइटों पर Doorknob का उपयोगकर्ता नाम KeyboardFire है । यह मुझे एक विचार देता है ...
काम
आप KeyboardFire Inc. में काम करते हैं, जो एक कंपनी है जो विशेष कीबोर्ड बनाती है। और, "विशेष" से मेरा मतलब है कि, जब भी आप एक कुंजी दबाते हैं, तो आपके घर में आग लग जाती है! नई KeyboardFire Doorknob श्रृंखला के साथ, जिन वस्तुओं में आग लगी है, वे doorknobs हैं।
हालांकि , बेवकूफ सरकारी नियमों के कारण, आपके उपयोगकर्ताओं को यह जानना होगा कि उनके घर में कौन से डॉकनेबॉर्न आग पर प्रकाश डालते हैं।
QWERTY कीबोर्ड के एक हिस्से की इस ASCII कला पर विचार करें:
1|2|3|4|5|6|7|8|9|0
q|w|e|r|t|y|u|i|o|p
a|s|d|f|g|h|j|k|l
z|x|c|v|b|n|m
( |
कुंजी के बीच की सीमाओं का प्रतिनिधित्व करते हैं।)
हम इस सटीक ASCII ड्राइंग को "ग्राफ" के रूप में मान सकते हैं, जहां रेंज के प्रत्येक वर्ण में [a-z0-9]
x (क्षैतिज) और y (वर्टिकल) इंडेक्स है, जहां (0,0)
है 1
। उदाहरण के लिए, पत्र d
में निर्देशांक हैं (2,6)
(पाइप और रिक्त स्थान समन्वय गणना में शामिल हैं)।
अब प्रत्येक उपयोगकर्ता के घर के बारे में सोचते हैं। प्रत्येक घर को 20x4 ASCII कला के रूप में शीर्ष-डाउन दृश्य दिया जा सकता है (इस दुनिया में जहां विनाशकारी कीबोर्ड बेचने के लिए कानूनी है, हर घर एक ही आकार है)। हम D
घर में प्रत्येक doorknob के पदों को चिह्नित करने के लिए उपयोग कर सकते हैं । यहाँ एक उदाहरण है:
D D D D
D
D D
हम इसे "घर का नक्शा" कहेंगे। (हाँ, यह बहुत सारे doorknobs है!)
किसी भी कुंजी को दबाने पर पास के डोरकनॉब को आग लग जाएगी। उदाहरण के लिए, यदि हम अक्षर के पिछले निर्देशांक लेते हैं d
, तो निकटतम डॉर्कनोब (मैनहट्टन दूरी द्वारा) निर्देशांक पर है (1,4)
। यह डॉकर्नोब है जो अक्षर d
के हिट होने पर आग पर प्रकाश डालेगा । यदि हम एक के साथ ज्वलंत doorknob को चिह्नित करने के लिए थे F
, तो परिणाम होगा:
D D D D
F
D D
ऐनक
आपका कार्यक्रम दो इनपुट लेगा:
- एक स्ट्रिंग जो पैटर्न से मेल खाती है
[a-z0-9]+
। - एक घर का नक्शा। यह एक स्ट्रिंग, स्ट्रिंग की एक सूची या कुछ समतुल्य हो सकता है।
आपको स्ट्रिंग के प्रत्येक अक्षर के माध्यम से जाने और आग पर संबंधित डॉकर्नोब को प्रकाश में लाने (इसके पत्र को ए F
) में बदलने की आवश्यकता है । यदि निकटतम डोरकनॉब पहले से ही आग पर है, तो इसे छोड़ दें-जैसा है। यदि इस पद्धति का उपयोग करके 1 से अधिक doorknob को आग पर जलाया जा सकता है, तो आप जिसे चाहें उसे प्रकाश कर सकते हैं।
पूरे स्ट्रिंग को इस तरीके से संसाधित करने के बाद, आपको परिणामस्वरूप घर का नक्शा प्रिंट करने की आवश्यकता है।
कोड-गोल्फ, इसलिए सबसे छोटा कार्यक्रम जीतता है। मानक खामियों को हमेशा की तरह प्रतिबंधित कर दिया।
उदाहरण
स्ट्रिंग:
helloworld123
घर का नक्शा:
D D D D
D
D D
संभावित परिणाम:
F F F D
F
D F
या:
F D F D
F
D F
या:
F F D D
F
F F
या:
F D D D
F
F F
संपादित करें: उह ... एक कारण है कि मेरे पास एक जवाब है, यहां तक कि एक +50 इनाम के साथ? यदि आप दिशाओं को जटिल / अस्पष्ट पाते हैं, तो मुझे खुशी होगी कि यदि आप टिप्पणी या कुछ और में पोस्ट करते हैं ... या मैं कुछ भी गलत कर रहा हूं ...
संपादित करें 2: बाउंटी एक दिन के भीतर समाप्त हो रहा है! पोस्ट कुछ और! कृप्या! कृप्या!!!! :(
d
'कॉर्ड्स (2, 6) और नहीं (2, 2) क्यों है? 2) उदाहरण के इतने सारे संभावित उत्तर क्यों हैं? 3) जब आप समझाते हैं कि कैसे आग लग जाएगी, तो आप भी क्यों बात कर रहे हैंd
? सिर्फ सीधे क्यों नहीं कहा जाता है कि दबानेa
से किसी घर में आग लग जाएगी?d
यह भी करता है?