ট্র্যাক
/
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

গ্রাহকেরা অর্ডার দিলে, তারা যদি মাত্র একটি বা দুটি পিৎজা অর্ডার করে, তাহলে একটি অতিরিক্ত ফি যোগ হয়:

  • ১টি পিৎজা: $3
  • ২টি পিৎজা: $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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।