स्थापित करना
मान लीजिए आप दिया जाता है n फ़्यूज़, 1 के साथ ≤ n ≤ 5, जिनमें से प्रत्येक एक मीटर लंबा है, और जहां प्रत्येक फ्यूज के एक संबद्ध दर जला है एन प्रति मीटर की दूरी पर डी घंटे।
फ्यूज को एक या दोनों सिरों पर जलाया जा सकता है, बाद में एक या दोनों सिरों पर बुझा दिया जाता है, फिर से बुझाया जाता है, आदि, जब तक कि फ्यूज पूरी तरह से भस्म नहीं हो जाता है। आप फ़्यूज़ को तुरंत प्रकाश और बुझाने में सक्षम हैं, और आप देख सकते हैं कि सटीक फ़्यूज़ पूरी तरह से भस्म हो गया (जला हुआ)।
फ्यूज को न तो काटा जा सकता है और न ही इसके सिरों को छोड़कर कहीं भी जलाया जा सकता है।
इस तरह के एक सेटअप किसी भी दो फ्यूज प्रकाश / खपत की घटनाओं के बीच समय को मापने के द्वारा, एक सटीक रूप से सटीक समय प्रणाली के लिए अनुमति देता है। उदाहरण के लिए, 1 मीटर प्रति घंटे की दर से दो फ़्यूज़ दिए गए हैं, आप बिल्कुल 45 मिनट (3/4 घंटे) माप सकते हैं
- एक साथ: दोनों सिरों पर पहले फ्यूज को रोशन करना, एक छोर पर दूसरे फ्यूज को रोशन करना, और अपने समय अंतराल की शुरुआत को चिह्नित करना
- पहले फ्यूज के दूसरे फ्यूज के दूसरे सिरे को रोशन करना पहले फ्यूज की खपत होती है (30 मिनट बाद)
- दूसरे फ़्यूज़ के तुरंत बाद अपने समय अंतराल के अंत को चिह्नित किया जाता है (15 मिनट बाद)
चुनौती
घंटे t के एक भिन्नात्मक संख्या को देखते हुए , और n फ़्यूज़ की सटीक बर्न दरों का प्रतिनिधित्व करने वाले n भिन्न का एक सेट , एक प्रोग्राम या फ़ंक्शन लिखता है जो एक सत्य मान देता है यदि t घंटे को फ़्यूज़ के व्यवस्थित जलने, या एक मानक के माध्यम से ठीक से मापा जा सकता है मिथ्या मूल्य अन्यथा।
कार्यक्रम का इनपुट निम्नलिखित में से कोई भी हो सकता है:
- प्रपत्र के कमांड-लाइन तर्क
TN/TD N1/D1 N2/D2 N3/D3 ...
- प्रपत्र के एक स्ट्रिंग
TN/TD N1/D1 N2/D2 N3/D3 ...
से पढ़ने केstdin
बराबर या - प्रपत्र का एक स्ट्रिंग
TN/TD N1/D1 N2/D2 N3/D3 ...
एक फ़ंक्शन तर्क के रूप में पारित हुआ - स्ट्रिंग का एक सरणी
["TN/TD", "N1/D1", "N2/D2", "N3/D3", ...]
एक फ़ंक्शन तर्क के रूप में पारित हुआ
सभी मामलों में टी = TN
/ TD
, जहां TN
, TD
cases [1,10000]।
इसी तरह, सभी मामलों में: फ्यूज i = N i / D i = N<i>
/ के लिए बर्न रेट D<i>
, जहां N<i>
, D<i>
∈ [1,10] all i ।
आप मान सकते हैं कि हमेशा 1 और 5 फ़्यूज़ (सम्मिलित) के बीच होगा, और सभी इनपुट मान्य और इन-रेंज हैं। आप यह भी मान सकते हैं कि सभी इनपुट अंश सबसे कम शब्दों में दिए गए हैं।
आप इस चुनौती के लिए आंशिक घटकों के साथ फ्लोटिंग पॉइंट नंबरों का उपयोग नहीं कर सकते हैं। यही है, यदि आप अपने आवेदन में कहीं भी फ्लोटिंग पॉइंट नंबरों का उपयोग करते हैं, तो वे केवल शून्य भिन्नात्मक घटक के साथ अभिन्न मान ले सकते हैं।
स्कोरिंग
यह एक कोड-गोल्फ चुनौती है, इसलिए बाइट्स में सबसे कम अनुपालन प्रस्तुत करने वाले को जीत से सम्मानित किया जाएगा।
उदाहरण इनपुट / आउटपुट
input: 29/6 3/2 2/3 3/5 3/7 7/5
output: true
One solution:
- light both ends of fuse 1, mark start of interval
- on fuse 1 consumption: light both ends of fuse 2, light one end of fuse 5
- on fuse 5 consumption: extinguish one end of fuse 2, light both ends of fuse 3,
light both ends of fuse 4
- on fuse 2 consumption: extinguish one end of fuse 3, extinguish both ends of
fuse 4
- on fuse 3 consumption: relight one end of fuse 4
- on consumption of fuse 4: mark end of interval (29/6 hours)
input: 2/1 3/1 5/1 7/1
output: false
input: 5/1 6/1 1/6 9/1 1/9
output: true
One solution:
- light fuse 1 at one end, light fuse 2 at both ends, light fuse 4 at both ends
- on fuse 1 consumption: extinguish one end of fuse 2, mark start of interval
- on fuse 4 consumption: relight one end of fuse 2
- on fuse 2 consumption: mark end of interval (5 hours)
हैप्पी फ्यूज़िंग! :)