Pizza Pi

Pizza Pi

Tanulófeladat

Bevezetés

Egész számok

Az egész számok olyan számok, amelyek a {..., -2, -1, 0, 1, 2, ...} halmazba tartoznak. Egy egész szám maximumát és minimumát az a rendszer határozza meg, amelyen a PHP fut. A legtöbb modern rendszeren ez jellemzően 64 bites érték, ami azt jelenti, hogy -9_223_372_036_854_775_808 és 9_223_372_036_854_775_807 közötti értékeket tud ábrázolni, a határokat is beleértve.

<?php

$a = 1234;
$a = 1_234_567;

Egész szám literálokat nem csak 10-es, hanem más számrendszerben is írhatsz, ha egy számrendszer-előtagot használsz:

<?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)

Forrás: a PHP dokumentációja.

Lebegőpontos számok

A PHP a lebegőpontos számokkal a valós számok egy részhalmazát ábrázolja. Egy vagy több számjegyből állnak, amelyeket tizedesjel választ el.

<?php

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

Gyakori buktatók

Nem minden szám és aritmetikai művelet végezhető el lebegőpontos számokkal. Ha dollárt és centet lebegőpontos számokkal ábrázolsz, az kerekítési hibákhoz vezethet.

<?php

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

Aritmetikai operátorok

A PHP számos operátort kínál aritmetikai műveletek elvégzéséhez. A PHP az aritmetikai operátorainál a szokásos matematikai műveleti sorrendet követi. A PHP által biztosított operátorok:

  • Identitás (+)
  • Negáció (-)
  • Összeadás (+)
  • Kivonás (-)
  • Szorzás (*)
  • Osztás (/)
  • Modulo (%)
  • Hatványozás (**)
$moles = +'10';
$aLotOfMoles = 6.022 * 10**23 * $moles;

Utasítások

Lilly szeret főzni. Pizzabulit szeretne rendezni a barátaival. Hogy a lehető legtöbbet hozza ki a hozzávalókból, tudnia kell, mennyi kell mindegyikből, mielőtt elkezdi.

Hogy megoldja, Lilly megírt egy programot a tervezés automatizálására, de a befejezéséhez a segítségedet kéri. Segítesz Lillynek megrendezni az arányosan tökéletes pizzabulit?

1. A tészta aránya

Lilly a vékony, ropogós pizzák kedvelője, vékonyabb tésztával. A közepéhez legalább 200 g tészta kell, de minden további személy, akit kiszolgál, újabb 20 g tésztát igényel.

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

Lillynek egy függvényre van szüksége, amely:

  • megkapja a pizzák számát,
  • megkapja azon személyek számát, akiket egy pizza kiszolgál,
  • és a szükséges tésztát grammra kerekítve adja vissza.

Például 4 pizza elkészítéséhez, amely 8 embert lát el:

<?php

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

2. Egy csepp szósz

Lilly aprólékos a szósz felkenésénél, de a pizzái mérete nem mindig egyforma. Tapasztalatából tudja, hogy pizzánként 125 mL szószra van szükség. Lillynek egy függvényre van szüksége, amely kiszámítja, hány doboz szószt kell venni.

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

Például, ha Lillynek 8 pizzát kell készítenie, és egy doboz 250 mL:

<?php

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

3. Egy kis sajtot, kérem

A sajt tökéletes kockákban kapható, és méret szerint árulják.

A képlet, amit Lilly használ, nem a pizza területének képlete, mivel nem szeretné, hogy a sajt a teljes felületet beborítsa. Úgy döntött, hogy a következő képlettel határozza meg, hány adott átmérőjű (diameter) pizza készíthető egy adott oldalhosszúságú (cheese_dimension) sajtkockából:

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

Készíts egy függvényt, amely:

  • megkapja egy sajtkocka oldalhosszát,
  • megkapja a sajtréteg kívánt vastagságát,
  • megkapja a pizza átmérőjét,
  • és Lilly képletével visszaadja az elkészíthető pizzák számát lefelé kerekítve.

Például egy 25x25x25 cm-es sajtkocka, 0,5 cm vastag sajtréteg és 30 cm átmérőjű pizzák esetén:

<?php

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

4. Igazságos elosztás

Végül Lilly szeretné, ha minden pizzája 8 szeletre oszlana, és egyenletesen eloszlanának a barátai között.

Készíts egy függvényt, amely:

  • megkapja a pizzák számát és a barátok számát,
  • és visszaadja a megmaradó szeletek számát, ha mindenki ugyanannyi szeletet vesz.

Például:

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateLeftOverSlices(2, 4);
// => 0
$pizza_pi->calculateLeftOverSlices(4, 3);
// => 2
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
PHP Exercism

Készen állsz elkezdeni a(z) Pizza Pi feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) PHP nyelvet 11 fogalom122 feladat segítségével, valódi emberi mentorálással, mindez ingyen.