दाने

दाने

मध्यम

परिचय

एक समय की बात है, एक बुद्धिमान नौकर ने एक राजकुमार की जान बचाई। राजा ने वादा किया कि नौकर जो भी माँगेगा, वह उसे देगा। राजा को शतरंज बहुत पसंद था। यह जानकर नौकर ने राजा से कहा कि उसे गेहूँ के दाने चाहिए। शतरंज के बोर्ड के पहले खाने पर एक दाना, और हर अगले खाने पर दानों की संख्या दोगुनी।

निर्देश

शतरंज के बोर्ड पर गेहूँ के दानों की संख्या निकालिए।

शतरंज के बोर्ड में 64 खाने होते हैं। खाना 1 पर एक दाना होता है, खाना 2 पर दो दाने, खाना 3 पर चार दाने, और इसी तरह हर बार संख्या दोगुनी होती जाती है।

ऐसा कोड लिखिए जो यह निकालता है:

  • किसी दिए गए खाने पर गेहूँ के दानों की संख्या
  • शतरंज के बोर्ड पर गेहूँ के दानों की कुल संख्या

अधिकतम पूर्णांक वैल्यू

PHP डॉक्स के अनुसार पूर्णांक की एक अधिकतम वैल्यू होती है:

एक int का आकार प्लेटफॉर्म पर निर्भर करता है, हालाँकि आम तौर पर इसकी अधिकतम वैल्यू लगभग दो अरब होती है (यानी 32 बिट साइन्ड)। 64-बिट प्लेटफॉर्म पर आम तौर पर अधिकतम वैल्यू लगभग 9E18 होती है। PHP अनसाइन्ड int का समर्थन नहीं करता।

दूसरे शब्दों में, PHP किसी भी 2^63 या उससे बड़ी संख्या को पूर्णांक के रूप में संभाल नहीं सकता। इस अभ्यास के कुछ टेस्ट के लिए 64 बिट पूर्णांक (2^64) चाहिए, जो PHP की पूर्णांक आकार-सीमा से बाहर है।

संख्या बहुत बड़ी हो जाने पर PHP अपने-आप int को float में बदल देता है:

अगर PHP को int टाइप की सीमा से बड़ी कोई संख्या मिलती है, तो उसे float मान लिया जाता है। इसी तरह, ऐसा ऑपरेशन जिसका परिणाम int टाइप की सीमा से बड़ी संख्या हो, वह भी float ही लौटाता है।

लेकिन float टाइप की परिशुद्धता सीमित होती है। और King को अपरिशुद्धता बिल्कुल पसंद नहीं है। इसलिए King ने तय किया कि गणनाओं के परिणाम उसे एक स्ट्रिंग के रूप में चाहिए, जो पूर्णांक वैल्यू बताए। वह उत्तर को int या float में नहीं चाहता। और वह चाहता है कि पूरी गणना पूर्णांकों में हो, न कि अंत में जाकर कोई ढीला-ढाला रूपांतरण किया जाए।

क्या आप ऐसी संख्याओं से बचकर यह हल कर सकते हैं जो भाषा सीधे संभाल नहीं सकती? और कृपया gmp या bc जैसी दूसरी PHP लाइब्रेरी भी इस्तेमाल न कीजिए।

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
PHP Exercism

दाने शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और PHP को 11 कॉन्सेप्ट122 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।