ट्रैक
/
F#
F#
/
अभ्यास
/
पिज़्ज़ा कीमत
पिज़्ज़ा कीमत

पिज़्ज़ा कीमत

सीखने का अभ्यास

परिचय

रिकर्शन

किसी चीज़ को खुद के संदर्भ में परिभाषित करने की क्षमता को रिकर्शन कहते हैं। F# में रिकर्शन सबसे आम तौर पर रिकर्शन फंक्शन में मिलता है, यानी ऐसे फंक्शन जो खुद को कॉल करते हैं।

एक रिकर्शन फंक्शन में कम से कम एक बेस केस और कम से कम एक रिकर्शन केस होना चाहिए। बेस केस फंक्शन को फिर से कॉल किए बिना एक वैल्यू लौटाता है। रिकर्शन केस फंक्शन को फिर से कॉल करता है और इनपुट में बदलाव करता है ताकि वह किसी समय बेस केस से मेल खाए।

रिकर्शन फंक्शन सामान्य फंक्शन की तरह ही बनाए जाते हैं, लेकिन rec मॉडिफायर के साथ। इस मॉडिफायर के बिना फंक्शन खुद को कॉल नहीं कर पाएगा, और ऐसा करने की कोशिश करने पर कंपाइलेशन एरर मिलेगी। इसलिए रिकर्शन को स्पष्ट रूप से चुनना ज़रूरी है।

let rec factorial x =
    // Base case
    if x = 1 then
        1
    // Recursive case
    else
        x * factorial (x - 1)

F# डिस्क्रिमिनेटेड यूनियन टाइप के ज़रिए रिकर्शन टाइप को भी सपोर्ट करता है। रिकर्शन डिस्क्रिमिनेटेड यूनियन टाइप में एक या अधिक केस अपने डेटा में उसी डिस्क्रिमिनेटेड यूनियन टाइप का संदर्भ देते हैं। रिकर्शन फंक्शन की तरह रिकर्शन टाइप में भी एक बेस केस होना चाहिए। रिकर्शन फंक्शन के विपरीत रिकर्शन टाइप rec कीवर्ड का इस्तेमाल नहीं करते।

type RussianDoll =
    | Doll                 // Base case
    | Layer of RussianDoll // Recursive case

निर्देश

इस अभ्यास में आप एक ऐसी पिज़्ज़ा दुकान पर काम कर रहे हैं जो ग्राहकों तक पिज़्ज़ा पहुँचाती है।

आप तीन तरह के पिज़्ज़ा देते हैं:

  • Margherita: $7
  • Caprese: $9
  • Formaggio: $10

ग्राहक थोड़ी अतिरिक्त फीस देकर दो अतिरिक्त विकल्प भी चुन सकते हैं:

  1. अतिरिक्त सॉस: $1
  2. अतिरिक्त टॉपिंग: $2

जब ग्राहक ऑर्डर देते हैं, तो अगर वे सिर्फ एक या दो पिज़्ज़ा ही ऑर्डर करते हैं, तो एक अतिरिक्त फीस जोड़ी जाती है:

  • 1 पिज़्ज़ा: $3
  • 2 पिज़्ज़ा: $2

आपके पास तीन काम हैं, और हर काम पिज़्ज़ा और उसकी कीमत से जुड़ा है।

1. पिज़्ज़ा के प्रकार और विकल्प बनाइए

Pizza डिस्क्रिमिनेटेड यूनियन बनाइए, जो पिज़्ज़ा के प्रकारों और पिज़्ज़ा में जोड़े जा सकने वाले दो अतिरिक्त विकल्पों को दर्शाती है:

  • Margherita
  • Caprese
  • Formaggio
  • ExtraSauce
  • ExtraToppings

2. पिज़्ज़ा की कीमत निकालिए

pizzaPrice फंक्शन लागू कीजिए जो किसी पिज़्ज़ा की कीमत निकालता है:

pizzaPrice Caprese
// => 9

3. ऑर्डर की कीमत निकालिए

orderPrice फंक्शन लागू कीजिए जो किसी ऑर्डर की कीमत निकालता है:

orderPrice [Margherita; Formaggio]
// => 19
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
F# Exercism

पिज़्ज़ा कीमत शुरू करने के लिए तैयार हैं?

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