Track
/
PHP
PHP
/
Esercizi
/
Pizza Pi
Pizza Pi

Pizza Pi

Esercizio di apprendimento

Introduzione

Numeri interi

I numeri interi sono numeri senza parte frazionaria che appartengono all'insieme {..., -2, -1, 0, 1, 2, ...}. I valori massimo e minimo di un numero intero sono determinati dal sistema su cui gira PHP. In genere, sulla maggior parte dei sistemi moderni, il numero intero è un valore a 64 bit, il che significa che può rappresentare da -9_223_372_036_854_775_808 a 9_223_372_036_854_775_807 inclusi.

<?php

$a = 1234;
$a = 1_234_567;

Puoi scrivere valori letterali interi in basi diverse dalla base 10 usando un prefisso di base:

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

Tratto dalla documentazione di PHP

Numeri in virgola mobile

I numeri in virgola mobile sono usati in PHP per rappresentare un sottoinsieme dei numeri reali. Iniziano con una o più cifre separate da un separatore decimale.

<?php

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

Errori comuni

Non tutti i numeri e le operazioni aritmetiche possono essere eseguiti con i numeri in virgola mobile. Usare i numeri in virgola mobile per rappresentare dollari e centesimi può portare a errori di arrotondamento.

<?php

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

Operatori aritmetici

PHP mette a disposizione diversi operatori per eseguire operazioni aritmetiche. PHP segue l'ordine di operazioni matematico standard per i suoi operatori aritmetici. Gli operatori forniti da PHP sono:

  • Identità (+)
  • Negazione (-)
  • Addizione (+)
  • Sottrazione (-)
  • Moltiplicazione (*)
  • Divisione (/)
  • Modulo (%)
  • Esponenziazione (**)
$moles = +'10';
$aLotOfMoles = 6.022 * 10**23 * $moles;

Istruzioni

Lilly adora cucinare. Vuole organizzare una festa a base di pizza con i suoi amici. Per sfruttare al meglio i suoi ingredienti, deve sapere quanto di ciascun ingrediente le serve prima di iniziare.

Per risolvere il problema, Lilly ha abbozzato un programma per automatizzare parte della pianificazione, ma ha bisogno del tuo aiuto per finirlo. Vuoi aiutare Lilly a organizzare una festa a base di pizza dalle proporzioni perfette?

1. Il rapporto dell'impasto

Lilly adora le pizze sottili e croccanti, con una crosta più sottile. L'impasto necessario per la parte centrale è di almeno 200g, ma ogni persona a cui la pizza è destinata ne richiede altri 20g.

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

Lilly ha bisogno di una funzione che:

  • Prende il numero di pizze
  • Prende il numero di persone che ogni pizza servirà
  • E restituisce l'impasto necessario, arrotondato al grammo più vicino.

Ad esempio, per fare 4 pizze che sfamano 8 persone:

<?php

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

2. Una spruzzata di salsa

Lilly è meticolosa quando stende la salsa, ma le dimensioni delle sue pizze possono variare. Per esperienza sa che servono 125mL di salsa per pizza. Lilly ha bisogno di una funzione che calcoli quante lattine di salsa comprare.

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

Ad esempio, dato che Lilly deve fare 8 pizze e ogni lattina è da 250mL:

<?php

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

3. Un po' di formaggio, per favore

Il formaggio si trova in cubi perfetti ed è venduto in base alle dimensioni.

La formula che Lily usa non è quella per l'area della pizza, perché non vuole che il formaggio copra tutta la superficie. Ha deciso di usare la formula seguente per determinare quante pizze di un certo diametro (diameter) si possono fare con un cubo di formaggio di un certo lato (cheese_dimension):

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

Crea una funzione che:

  • Prende la misura del lato di un cubo di formaggio
  • Prende lo spessore desiderato dello strato di formaggio
  • Prende il diametro della pizza
  • E usa la formula di Lilly per restituire il numero di pizze che si possono fare, arrotondando per difetto.

Ad esempio, con un cubo di formaggio di 25x25x25cm, uno strato di formaggio spesso 0.5cm e pizze di 30cm di diametro:

<?php

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

4. Una divisione equa

Infine, Lilly vuole che le sue pizze si dividano in 8 fette ciascuna e siano distribuite in modo equo tra i suoi amici.

Crea una funzione che:

  • Prende un numero di pizze e un numero di amici
  • e restituisce il numero di fette che avanzeranno se ogni persona prende lo stesso numero di fette.

Ad esempio:

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateLeftOverSlices(2, 4);
// => 0
$pizza_pi->calculateLeftOverSlices(4, 3);
// => 2
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
PHP Exercism

Vuoi iniziare Pizza Pi?

Iscriviti a Exercism per imparare e padroneggiare PHP con 11 concetti122 esercizi e il mentoring di persone reali, tutto gratis.