পিৎজা পাই

পিৎজা পাই

লার্নিং অনুশীলনী

ভূমিকা

ইন্টিজার

ইন্টিজার হলো পূর্ণসংখ্যা, যেগুলো {..., -2, -1, 0, 1, 2, ...} সেটের অন্তর্গত। একটি ইন্টিজারের সর্বোচ্চ ও সর্বনিম্ন মান নির্ভর করে PHP যে সিস্টেমে রান করে তার উপর। সাধারণত আধুনিক বেশিরভাগ সিস্টেমে ইন্টিজার একটি ৬৪-বিট মান, অর্থাৎ এটি -9_223_372_036_854_775_808 থেকে 9_223_372_036_854_775_807 পর্যন্ত মান রাখতে পারে, দুটি প্রান্তের মানসহ।

<?php

$a = 1234;
$a = 1_234_567;

দশ ভিত্তি ছাড়াও একটি বেস প্রিফিক্স ব্যবহার করে আপনি ইন্টিজার লিটারাল লিখতে পারেন:

<?php

$a = 0123; // octal number (equivalent to 83 decimal)
$a = 0o123; // octal number (as of PHP 8.1.0)
$a = 0x1A; // hexadecimal number (equivalent to 26 decimal)
$a = 0b11111111; // binary number (equivalent to 255 decimal)

PHP-এর ডকুমেন্টেশন থেকে নেওয়া।

ফ্লোটিং পয়েন্ট সংখ্যা

PHP-তে বাস্তব সংখ্যার একটি উপসেট প্রকাশ করতে ফ্লোটিং পয়েন্ট সংখ্যা ব্যবহার করা হয়। এগুলো এক বা একাধিক অঙ্ক দিয়ে শুরু হয়, আর একটি দশমিক বিভাজক দিয়ে আলাদা করা হয়।

<?php

$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;
$d = 1_234.567; // as of PHP 7.4.0

কমন বিপদ

সব সংখ্যা ও গাণিতিক অপারেশন ফ্লোটিং পয়েন্ট সংখ্যা দিয়ে করা যায় না। ডলার ও সেন্ট প্রকাশ করতে ফ্লোটিং পয়েন্ট সংখ্যা ব্যবহার করলে রাউন্ডিং এরর হতে পারে।

<?php

$result = 0.1 + 0.2; // => 0.30000000000000004

গাণিতিক অপারেটর

গাণিতিক অপারেশন চালানোর জন্য PHP বেশ কিছু অপারেটর দেয়। নিজের গাণিতিক অপারেটরগুলোর ক্ষেত্রে PHP গণিতের প্রচলিত অপারেশন-ক্রম অনুসরণ করে। PHP যে অপারেটরগুলো দেয় সেগুলো হলো:

  • অভেদক (+)
  • ঋণাত্মকীকরণ (-)
  • যোগ (+)
  • বিয়োগ (-)
  • গুণ (*)
  • ভাগ (/)
  • মডুলো (%)
  • সূচকীকরণ (**)
$moles = +'10';
$aLotOfMoles = 6.022 * 10**23 * $moles;

নির্দেশনা

লিলি রান্না করতে ভালোবাসেন। তিনি বন্ধুদের নিয়ে একটি পিৎজা পার্টি করতে চান। উপকরণগুলোর সর্বোচ্চ ব্যবহার করতে হলে, শুরু করার আগে কোন উপকরণ কতটা লাগবে সেটা তার জানা দরকার।

এটি সমাধান করতে লিলি পরিকল্পনার কিছু অংশ স্বয়ংক্রিয় করার জন্য একটি প্রোগ্রামের খসড়া তৈরি করেছেন, তবে সেটি শেষ করতে আপনার সাহায্য দরকার। আপনি কি লিলিকে অনুপাতে নিখুঁত পিৎজা পার্টি করতে সাহায্য করবেন?

1. ময়দার অনুপাত

লিলি পাতলা ক্রাস্টযুক্ত, পাতলা ও মুচমুচে পিৎজা পছন্দ করেন। মাঝের অংশের জন্য কমপক্ষে ২০০ গ্রাম ময়দা লাগে, তবে প্রতিটি পরিবেশিত ব্যক্তির জন্য আরও ২০ গ্রাম ময়দা লাগে।

grams = pizzas * ((persons * 20) + 200)

লিলির একটি ফাংশন দরকার যা:

  • পিৎজার সংখ্যা নেয়
  • প্রতিটি পিৎজা কতজনকে পরিবেশন করবে সেই সংখ্যা নেয়
  • এবং নিকটতম গ্রামে প্রয়োজনীয় ময়দা রিটার্ন করে।

উদাহরণস্বরূপ, ৮ জনকে খাওয়ানো যায় এমন ৪টি পিৎজা বানাতে:

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateDoughRequirement(4, 8);
// => 1440

2. এক ছোঁয়া সস

লিলি সস লাগাতে খুব সতর্ক, তবে তার পিৎজার আকার সবসময় একই রকম থাকে না। তার অভিজ্ঞতা থেকে তিনি জানেন, প্রতিটি পিৎজায় ১২৫ মিলিলিটার সস লাগে। লিলির একটি ফাংশন দরকার, যা হিসাব করবে কত ক্যান সস কিনতে হবে।

cans of sauce = pizzas * sauce per pizza / sauce can volume

উদাহরণস্বরূপ, লিলিকে যদি ৮টি পিৎজা বানাতে হয় এবং প্রতি ক্যানে ২৫০ মিলিলিটার থাকে:

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateSauceRequirement(8, 250);
// => 4

3. একটু চিজ, প্লিজ

চিজ নিখুঁত ঘনক আকারে পাওয়া যায় এবং আকার অনুযায়ী বিক্রি হয়।

লিলি যে সূত্রটি ব্যবহার করেন সেটি পিৎজার ক্ষেত্রফলের সূত্র নয়, কারণ তিনি চান না যে চিজ পুরো ক্ষেত্রফল ঢেকে ফেলুক। কোনো বাহুর দৈর্ঘ্যের (cheese_dimension) একটি চিজ ঘনক থেকে কোনো ব্যাসের (diameter) কতটি পিৎজা বানানো যাবে তা নির্ণয় করতে তিনি নিচের সূত্রটি ব্যবহার করার সিদ্ধান্ত নিলেন:

pizzas = (cheese_dimension³) / (thickness * PI * diameter)

এমন একটি ফাংশন তৈরি করুন যা:

  • চিজ ঘনকের একটি বাহুর দৈর্ঘ্য নেয়
  • চিজ স্তরের কাঙ্ক্ষিত পুরুত্ব নেয়
  • পিৎজার ব্যাস নেয়
  • এবং লিলির সূত্র ব্যবহার করে নিচের দিকে রাউন্ড করে কতটি পিৎজা বানানো যাবে সেই সংখ্যা রিটার্ন করে।

উদাহরণস্বরূপ, ২৫x২৫x২৫ সেমি একটি চিজ ঘনক, ০.৫ সেমি পুরু চিজ স্তর এবং ৩০ সেমি ব্যাসের পিৎজা হলে:

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateCheeseCubeCoverage(25, 0.5, 30);
// => 331

4. ন্যায্য ভাগ

সবশেষে, লিলি চান তার প্রতিটি পিৎজা ৮ টুকরোয় ভাগ হোক এবং বন্ধুদের মধ্যে সমানভাবে বিতরণ হোক।

এমন একটি ফাংশন তৈরি করুন যা:

  • পিৎজার সংখ্যা এবং বন্ধুর সংখ্যা নেয়
  • এবং প্রত্যেকে সমান সংখ্যক টুকরো নিলে কত টুকরো অবশিষ্ট থাকবে সেই সংখ্যা রিটার্ন করে।

উদাহরণস্বরূপ:

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateLeftOverSlices(2, 4);
// => 0
$pizza_pi->calculateLeftOverSlices(4, 3);
// => 2
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
PHP Exercism

পিৎজা পাই শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, PHP ট্র্যাকের 11টি কনসেপ্ট122টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।