बॉलिंग

बॉलिंग

मध्यम

निर्देश

बॉलिंग के खेल का स्कोर बनाइए।

बॉलिंग एक खेल है जिसमें खिलाड़ी एक भारी गेंद लुढ़काकर त्रिभुज के आकार में सजी पिन गिराते हैं। बॉलिंग के खेल का स्कोर दर्ज रखने के लिए कोड लिखिए।

बॉलिंग का स्कोर

एक खेल में 10 फ्रेम होते हैं। हर फ्रेम में एक या दो बार गेंद फेंकी जाती है, और फ्रेम शुरू होते समय 10 पिन खड़ी रहती हैं। फ्रेम का स्कोर निकालने के लिए तीन स्थितियाँ होती हैं।

  • ओपन फ्रेम वह है जिसमें उस फ्रेम का स्कोर 10 से कम दर्ज होता है। इस मामले में फ्रेम का स्कोर गिराई गई पिन की संख्या के बराबर होता है।

  • स्पेयर वह फ्रेम है जिसमें दूसरी बार गेंद फेंकने पर सभी दस पिन गिर जाती हैं। स्पेयर का कुल मान 10 और अगली बार गेंद फेंकने पर गिराई गई पिन की संख्या के जोड़ के बराबर होता है।

  • स्ट्राइक वह फ्रेम है जिसमें पहली बार गेंद फेंकने पर सभी दस पिन गिर जाती हैं। स्ट्राइक का कुल मान 10 और अगली दो बार गेंद फेंकने पर गिराई गई पिन की संख्या के जोड़ के बराबर होता है। अगर किसी स्ट्राइक के ठीक बाद दूसरा स्ट्राइक हो जाए, तो एक और गेंद फेंके जाने तक पहले स्ट्राइक का मान तय नहीं हो पाता।

यहाँ तीन फ्रेम का एक उदाहरण है:

फ्रेम 1 फ्रेम 2 फ्रेम 3
X (स्ट्राइक) 5/ (स्पेयर) 9 0 (ओपन फ्रेम)

फ्रेम 1 का स्कोर (10 + 5 + 5) = 20 है।

फ्रेम 2 का स्कोर (5 + 5 + 9) = 19 है।

फ्रेम 3 का स्कोर (9 + 0) = 9 है।

यानी इस समय तक का कुल जोड़ 48 है।

खेल का दसवाँ फ्रेम एक खास मामला है। अगर कोई खिलाड़ी स्पेयर या स्ट्राइक करता है, तो उसे क्रमशः एक या दो फिल बॉल मिलती हैं। फिल बॉल दसवें फ्रेम का कुल स्कोर निकालने के लिए ही होती हैं। फिल बॉल पर स्ट्राइक या स्पेयर होने से खिलाड़ी को और फिल बॉल नहीं मिलतीं। दसवें फ्रेम का कुल मान गिराई गई कुल पिन की संख्या के बराबर होता है।

X1/ (स्ट्राइक और स्पेयर) वाले दसवें फ्रेम का कुल मान 20 होता है।

XXX (तीन स्ट्राइक) वाले दसवें फ्रेम का कुल मान 30 होता है।

आवश्यकताएँ

बॉलिंग के खेल के स्कोर का हिसाब रखने के लिए कोड लिखिए। इस कोड में दो काम होने चाहिए:

  • जब भी खिलाड़ी गेंद फेंकता है, हर बार roll(pins : int) को कॉल किया जाता है। इसका आर्गुमेंट बताता है कि कितनी पिन गिरीं।
  • score() : int को खेल के बिलकुल अंत में ही कॉल किया जाता है। यह उस खेल का कुल स्कोर लौटाता है।
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
OCaml Exercism

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

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