बच्चों से संबंधित परिचय
जब भी मैं अपने बच्चों को एक मनोरंजन पार्क में ले जाता हूं, तो बच्चे अधिक घबरा जाते हैं हम पार्क के करीब होते हैं, तंत्रिका चोटी के साथ जब हम पार्किंग स्थल में होते हैं और पार्क करने के लिए कोई जगह नहीं पाते हैं। इसलिए मैंने तय किया है कि पार्किंग खर्च किए गए समय को कम से कम करने के लिए मुझे निकटतम मुफ्त पार्किंग स्थान खोजने के लिए एक विधि की आवश्यकता है।
तकनीकी परिचय
इस तरह एक पार्किंग स्थल के प्रतिनिधित्व की कल्पना करें:
*****************
* *
* ··CC··C··CC·· *
* ************* *
* ··CCCCCCCCC·· *
* *
**********E******
इस प्रतिनिधित्व में *
एक दीवार, एक ·
मुफ्त पार्किंग स्थान, एक E
प्रवेश बिंदु और C
एक कार पहले से ही खड़ी है। हर व्हाट्सएप एक स्थिति है जिस कार को पार्क किया जा सकता है वह पार्किंग स्थल पर घूमने के लिए उपयोग कर सकती है। आइए अब इस अवधारणा को 3 डी तक बढ़ाकर बहु-स्तरीय पार्किंग स्थल बनाएँ:
1st floor 2nd floor 3rd floor 4th floor
***************** ***************** ***************** *****************
* 1 * 2 * 3 * *
* CCCCCCCCCCCCC * * CCCCCCCCCCCCC * * ····C··CCCCCC * * ······C······ *
* ************* * * ************* * * ************* * * ************* *
* CCCCCCCCCCCCC * * CCCCCCCCCCCCC * * ···CCCCCCCCCC * * ··C·······C·· *
* * * 1 * 2 * 3
**********E****** ***************** ***************** *****************
संख्या 1
, 2
और 3
स्तरों के बीच कनेक्शन का प्रतिनिधित्व करते हैं। 1
के साथ पहली मंजिल जोड़ता से 1
दूसरी मंजिल तो में एक कार स्टेपिंग में 1
पहली मंजिल में स्थान पर दिखाई देता 1
दूसरी मंजिल में स्थिति।
चुनौती
निम्नलिखित की तरह पार्किंग की एक स्कीम देते हुए, सबसे छोटा प्रोग्राम लिखें, जो निम्नलिखित के अनुसार निकटतम मुक्त पार्किंग स्थान की दूरी की गणना करता है।
नियम
- इनपुट 3 डी चार सरणी या 2 डी स्ट्रिंग सरणी या समकक्ष होगा, और आउटपुट एक पूर्णांक होगा जो कार को निकटतम मुफ्त पार्किंग स्थान पर पहुंचने के लिए आवश्यक कदमों की संख्या का प्रतिनिधित्व करेगा। यदि आप एक 3 डी चार सरणी प्राप्त करते हैं तो पहला इंडेक्स फ्लोर नंबर और प्रत्येक फ्लोर के लिए दूसरा और तीसरा इंडेक्स (x, y) स्थिति का प्रतिनिधित्व कर सकता है, लेकिन यह आपके ऊपर है।
- 9 से अधिक रैंप नहीं होंगे, जिनका प्रतिनिधित्व किया जाएगा
[1-9]
। - कार
E
स्थिति से शुरू होती है (प्रति नक्शे में केवल एक प्रवेश बिंदु होगा) और हर बार चार दिशाओं में से एक में व्हाट्सएप का उपयोग करके घूमता है: ऊपर, नीचे, बाएं, दाएं। कार·
पदों और[1-9]
पदों पर भी कदम रख सकती है । - स्थिति का हर परिवर्तन (चरण) 1 के रूप में गिना जाता है, और हर बार कार एक मंजिल से दूसरी कोटि में जाती है, क्योंकि कार को रैंप लेना चाहिए। इस मामले में, एक खाली स्थान के से आंदोलन एक बगल में
1
करने के लिए1
अपने आप में क्या है क्योंकि इस आंदोलन कार में प्रकट होता है की वजह से, 3 चरणों के रूप में गिना है1
अन्य फर्श पर स्थिति। - कार मैट्रिक्स सीमा से आगे नहीं जा सकती है।
- जब कार पार्क की जाएगी तो गिनती खत्म हो जाएगी
·
। यदि कोई पहुंच से मुक्त पार्किंग स्थान नहीं है, तो आप शून्य, एक नकारात्मक पूर्णांक, एक शून्य मान या एक त्रुटि वापस कर सकते हैं।
उदाहरण
उदाहरण के ऊपर परिणाम 32 होगा, क्योंकि यह चौथी मंजिल पर जाने के लिए सस्ता है और पास के पार्किंग स्थल में पार्क किया जा सकता है 3
। तीसरी मंजिल में निकटतम मुक्त पार्किंग स्थान 33 और 34 की दूरी पर हैं।
अन्य उदाहरण:
1st floor 2nd floor 3rd floor 4th floor
***************** ***************** ***************** *****************
* 1 * 2 * 3 * *
* CCCCCCCCCCCCC * * CCCCCCCCCCCCC * * ····C··CCCCCC * * ······C······ *
* ************* * * ************* * * ************* * * ************* *
* CCCCCCCCCCCCC * * ·CCCCCCCCCCCC * * ···CCCCCCCCCC * * ··C·······C·· *
* * * 1 * 2 * 3
**********E****** ***************** ***************** *****************
Answer: 28 (now the parking space in the 2nd floor is closer)
1st floor 2nd floor 3rd floor 4th floor
***************** ***************** ***************** *****************
* 1 4 2 5 3 6 *
* CCCCCCCCCCCCC * * CCCCCCCCCCCCC * * ····C··CCCCCC * * ······C······ *
* ************* * * ************* * * ************* * * ************* *
* CCCCCCCCCCCCC * * CCCCCCCCCCCCC * * ···CCCCCCCCCC * * ··C·······C·· *
4 * 5 1 6 2 * 3
**********E****** ***************** ***************** *****************
Answer: 24 (now it's better to go to ramp 4 and then to ramp 5 to the third floor)
1st floor 2nd floor 3rd floor 4th floor
***************** ***************** ***************** *****************
* 1 * * * 3 * 2
* CCCCCCCCCCCCC * * CCCCCCCCCCCCC * * ····C··CCCCCC * * ······C······ *
* ************* * * ************* * * ************* * * ************* *
* CCCCCCCCCCCCC * * ·CCCCCCCCCCCC * * ···CCCCCCCCCC * * ··C·······C·· *
* * * 3 * 2 * 1
**********E****** ***************** ***************** *****************
Answer: 16 (now the parking space in the 4th floor is closer)
1st floor 2nd floor 3rd floor 4th floor 5th floor
************ ************ ************ ************ ************
*CCCCCCCCC 1 *CCCCCCCCC 2 *CCCCCCCCC 3 *·CCCCCCCC 4 *········C *
* * * * * * * * * *
*CCCCCCCCC E *CCCCCCCCC 1 *CCCCCCCCC 2 *··CCCCCCC 3 *·······CC 4
************ ************ ************ ************ ************
Answer: 29 (both the nearest parking spaces at the 4th and 5th floors are at the same distance)
1st floor 2nd floor 3rd floor
************ ************ ************
*CCCCCCCCC 1 *CCCCCCCCC 2 *CCCCCCCCC *
* * * * * *
*CCCCCCCCC E *CCCCCCCCC 1 *CCCCCCCCC 2
************ ************ ************
Answer: -1 (no free parking space)
1st floor
************
* *
* *
* E*
************
Answer: -1 (no parking space at all)
1st floor
************
* ····· *
*· ****
* ····· * E
*********
Answer: -1 (the parking lot designer was a genius)
वैकल्पिक
- आप पार्किंग लॉट मैप का प्रतिनिधित्व करने के लिए जो भी वर्ण उपयोग कर सकते हैं, बस अपने उत्तर में निर्दिष्ट करें कि आपके चुने हुए अक्षर क्या हैं और उनका क्या मतलब है।
यह कोड-गोल्फ है , इसलिए प्रत्येक भाषा की जीत के लिए सबसे छोटा कार्यक्रम / तरीका / लैम्ब्डा / जो कुछ भी हो सकता है!
यदि आपको एल्गोरिथ्म में मदद की आवश्यकता है, तो कृपया सी # में मेरे (अनगुल्ड) कार्यान्वयन की जांच करें ।