Pizza Pi

Pizza Pi

Exercice d'apprentissage

Introduction

Les entiers

Les entiers sont des nombres entiers qui appartiennent à l'ensemble {..., -2, -1, 0, 1, 2, ...}. Les valeurs maximale et minimale d'un entier dépendent du système sur lequel PHP s'exécute. En général, sur la plupart des systèmes modernes, un entier est une valeur de 64 bits, ce qui signifie qu'il peut représenter -9_223_372_036_854_775_808 jusqu'à 9_223_372_036_854_775_807 inclus.

<?php

$a = 1234;
$a = 1_234_567;

On peut écrire des valeurs littérales entières dans une base autre que 10 en utilisant un préfixe de 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)

Tiré de la documentation de PHP

Les nombres à virgule flottante

Les nombres à virgule flottante sont utilisés en PHP pour représenter un sous-ensemble des nombres réels. Ils commencent par un ou plusieurs chiffres séparés par un séparateur décimal.

<?php

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

Pièges courants

Tous les nombres et toutes les opérations arithmétiques ne peuvent pas être effectués avec des nombres à virgule flottante. Utiliser des nombres à virgule flottante pour représenter des dollars et des cents peut entraîner des erreurs d'arrondi.

<?php

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

Les opérateurs arithmétiques

PHP fournit un certain nombre d'opérateurs pour effectuer des opérations arithmétiques. PHP suit l'ordre des opérations mathématiques standard pour ses opérateurs arithmétiques. Les opérateurs fournis par PHP sont :

  • Identité (+)
  • Négation (-)
  • Addition (+)
  • Soustraction (-)
  • Multiplication (*)
  • Division (/)
  • Modulo (%)
  • Exponentiation (**)
$moles = +'10';
$aLotOfMoles = 6.022 * 10**23 * $moles;

Instructions

Lilly adore cuisiner. Elle veut organiser une soirée pizza avec ses amis. Pour tirer le meilleur parti de ses ingrédients, elle doit savoir quelle quantité de chaque ingrédient elle a besoin avant de commencer.

Pour résoudre ce problème, Lilly a ébauché un programme pour automatiser une partie de la planification, mais elle a besoin de ton aide pour le terminer. Veux-tu aider Lilly à organiser la soirée pizza aux proportions parfaites ?

1. Un ratio de pâte

Lilly est fan de pizzas fines et croustillantes, avec une croûte plus fine. La pâte nécessaire pour le milieu est de 200 g minimum, mais chaque personne servie nécessite 20 g de pâte supplémentaires.

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

Lilly a besoin d'une fonction qui :

  • Prend le nombre de pizzas
  • Le nombre de personnes que chaque pizza servira
  • Et renvoie la pâte nécessaire arrondie au gramme près.

Par exemple, pour faire 4 pizzas qui nourrissent 8 personnes :

<?php

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

2. Une touche de sauce

Lilly est méticuleuse quand elle applique sa sauce, mais la taille de ses pizzas peut varier. D'après son expérience, il faut 125 mL de sauce par pizza. Lilly a besoin d'une fonction qui calcule combien de boîtes de sauce acheter.

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

Par exemple, sachant que Lilly doit faire 8 pizzas et que chaque boîte contient 250 mL :

<?php

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

3. Du fromage, s'il te plaît

Le fromage se présente en cubes parfaits et se vend selon sa taille.

La formule utilisée par Lilly n'est pas celle de l'aire de la pizza, puisqu'elle ne veut pas que le fromage recouvre toute la surface. Elle a décidé d'utiliser la formule suivante pour déterminer combien de pizzas d'un certain diamètre (diameter) on peut faire à partir d'un cube de fromage d'une certaine longueur d'arête (cheese_dimension) :

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

Crée une fonction qui :

  • Prend la longueur d'arête d'un cube de fromage
  • Prend l'épaisseur souhaitée de la couche de fromage
  • Prend le diamètre de la pizza
  • Et utilise la formule de Lilly pour renvoyer le nombre de pizzas que l'on peut faire, arrondi à l'entier inférieur.

Par exemple, avec un cube de fromage de 25 × 25 × 25 cm, une couche de fromage de 0,5 cm d'épaisseur et des pizzas de 30 cm de diamètre :

<?php

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

4. Un partage équitable

Enfin, Lilly veut que ses pizzas soient coupées en 8 parts chacune et réparties équitablement entre ses amis.

Crée une fonction qui :

  • Prend un nombre de pizzas et un nombre d'amis
  • et renvoie le nombre de parts restantes si chaque personne prend le même nombre de parts.

Par exemple :

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateLeftOverSlices(2, 4);
// => 0
$pizza_pi->calculateLeftOverSlices(4, 3);
// => 2
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
PHP Exercism

Prêt à commencer Pizza Pi ?

Inscris-toi sur Exercism pour apprendre et maîtriser PHP avec 11 concepts122 exercices, et un vrai mentorat humain, le tout gratuitement.