परिचय
आज की चुनौती दांतों को लेकर है। विशेष रूप से, एक दांत से दूसरे दांत पर ब्रश करने में कितना समय लगता है। आपकी चुनौती है, दो दांतों के स्थानों को देखते हुए, पहली से दूसरी बार ब्रश करने के लिए कम से कम समय का उत्पादन करना।
चुनौती
इस चुनौती के लिए हम एक औसत वयस्क मानव मुंह के एक लेआउट का उपयोग करेंगे:
यह आरेख व्यापक रूप से उपयोग की जाने वाली आईएसओ नंबरिंग प्रणाली को दर्शाता है । सिस्टम मुंह को चार भागों में विभाजित करता है और उन्हें प्रत्येक संख्या प्रदान करता है: ऊपरी दाएं (1), ऊपरी बाएं (2), निचले बाएं (3), और निचले दाएं (4)। वे तब मुंह के बीच से 1-8 से प्रत्येक खंड के दांतों को संख्या देते हैं। इसलिए ऊपरी दाएं भाग (केंद्र 1) में केंद्र से चौथा दांत दांत संख्या 14 है।
मान लें कि एक दांत को ब्रश करने में 1 यूनिट समय लगता है। एक दाँत से अगले एक बग़ल में जाने में 0 यूनिट समय लगता है। आप इसके ऊपर या नीचे सीधे एक दांत से दांत तक भी पार कर सकते हैं, जिसमें 1 यूनिट समय भी लगता है। तो आपको दाँत 14 से दाँत 31 तक ब्रश करने में कितना समय लगता है? ऊपर दिए गए आरेख को देखकर, आप देखेंगे कि इसमें 7 इकाइयों का समय लगता है। यहां बताया गया है कि गणना कैसे की जाती है:
Action : Unit of time
Brushing tooth 14 : 1 unit
Brushing tooth 13 : 1 unit
Brushing tooth 12 : 1 unit
Brushing tooth 11 : 1 unit
Brushing tooth 21 : 1 unit
Cross to bottom of mouth : 1 unit
Brushing tooth 31 : 1 unit
------------------------------
Total: 7 units
ध्यान दें कि वह एकमात्र मार्ग नहीं है जिसे हम ले सकते थे, लेकिन छोटे मार्ग नहीं हैं।
तो आपकी चुनौती यह है:
- आप एक पूर्ण कार्यक्रम या फ़ंक्शन लिखेंगे जो दो तर्क स्वीकार करते हैं जो दांत संख्या हैं, और आउटपुट (या रिटर्न) एक से दूसरे तक ब्रश करने के लिए सबसे कम समय है।
- आप नंबर या तार, और उत्पादन कैसे कभी आप (इच्छा के रूप में इनपुट लेने स्वीकार्य तरीकों के भीतर )।
- मानक खामियों को डिफ़ॉल्ट रूप से मना किया जाता है।
- यह सवाल कोड-गोल्फ है , इसलिए सबसे छोटा बायटेकाउंट जीतता है।
यहाँ कुछ टेस्टकेस हैं ( धन्यवाद जोनाथन एलन ):
14, 21 => 5 14, 44 => 3 14, 14 => 1 33, 37 => 5
सौभाग्य!
