مسیرها
/
PHP
PHP
/
تمرین‌ها
/
پیتزا پای
پیتزا پای

پیتزا پای

تمرین یادگیری

مقدمه

اعداد صحیح

اعداد صحیح اعدادی کاملاند که به مجموعه‌ی {..., -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;

دستورالعمل‌ها

Lilly عاشق آشپزی است. او می‌خواهد با دوستانش یک مهمانی پیتزا برگزار کند. برای اینکه نهایت استفاده را از مواد اولیه‌اش ببرد، باید بداند پیش از شروع، به چه مقدار از هر ماده نیاز دارد.

برای حل این مسئله، Lilly برنامه‌ای نوشته است تا بخشی از برنامه‌ریزی را خودکار کند، اما برای کامل کردنش به کمک شما نیاز دارد. آیا به Lilly کمک می‌کنید تا مهمانی پیتزایی با تناسب کامل برگزار کند؟

1. نسبت خمیر

Lilly عاشق پیتزاهای نازک و ترد با خمیر نازک‌تر است. خمیر لازم برای وسط حداقل ۲۰۰ گرم است، اما هر نفری که قرار است از این پیتزا سهم ببرد، ۲۰ گرم خمیر دیگر نیاز دارد.

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

Lilly به تابعی نیاز دارد که:

  • تعداد پیتزاها را بگیرد
  • تعداد افرادی را که هر پیتزا برایشان کافی است بگیرد
  • و مقدار خمیر لازم را با گرد کردن به نزدیک‌ترین گرم برگرداند

برای مثال، برای درست کردن ۴ پیتزا که ۸ نفر را سیر می‌کند:

<?php

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

2. کمی سس

Lilly در ریختن سس وسواس زیادی به خرج می‌دهد، اما اندازه‌ی پیتزاهایش ممکن است یکسان نباشد. از تجربه‌اش می‌داند که برای هر پیتزا ۱۲۵ میلی‌لیتر سس لازم است. Lilly به تابعی نیاز دارد که حساب کند چند قوطی سس باید بخرد.

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

برای مثال، فرض کنید Lilly باید ۸ پیتزا درست کند و هر قوطی ۲۵۰ میلی‌لیتر است:

<?php

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

3. کمی پنیر، لطفاً

پنیر به شکل مکعب‌های کامل عرضه می‌شود و بر اساس اندازه فروخته می‌شود. فرمولی که Lilly استفاده می‌کند، فرمول مساحت پیتزا نیست، چون او نمی‌خواهد پنیر کل سطح را بپوشاند. او تصمیم گرفت از فرمول زیر استفاده کند تا تعیین کند از یک مکعب پنیر با طول ضلع مشخص (cheese_dimension) چند پیتزا با قطر مشخص (diameter) می‌توان درست کرد:

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

تابعی بسازید که:

  • طول ضلع یک مکعب پنیر را بگیرد
  • ضخامت مورد نظر لایه‌ی پنیر را بگیرد
  • قطر پیتزا را بگیرد
  • و با استفاده از فرمول Lilly تعداد پیتزاهایی را که می‌توان درست کرد، با گرد کردن به پایین برگرداند

برای مثال، فرض کنید یک مکعب پنیر ۲۵×۲۵×۲۵ سانتی‌متر، لایه‌ی پنیر با ضخامت ۰٫۵ سانتی‌متر و پیتزاهایی با قطر ۳۰ سانتی‌متر داریم:

<?php

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

4. سهم عادلانه

در پایان، Lilly می‌خواهد هر پیتزا به ۸ برش تقسیم شود و به‌طور یکسان بین دوستانش پخش شود.

تابعی بسازید که:

  • تعداد پیتزاها و تعداد دوستان را بگیرد
  • و تعداد برش‌های باقی‌مانده را برگرداند، اگر هر نفر تعداد مساوی برش بردارد

برای مثال:

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateLeftOverSlices(2, 4);
// => 0
$pizza_pi->calculateLeftOverSlices(4, 3);
// => 2
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
PHP Exercism

آماده‌اید پیتزا پای را شروع کنید؟

در Exercism ثبت‌نام کنید تا PHP را همراه با 11 مفهوم122 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.