Tracks
/
PHP
PHP
/
Übungen
/
Pizza Pi
Pizza Pi

Pizza Pi

Lernübung

Einführung

Ganzzahlen

Ganzzahlen sind ganze Zahlen, die zur Menge {..., -2, -1, 0, 1, 2, ...} gehören. Die maximalen und minimalen Werte einer Ganzzahl hängen von dem System ab, auf dem PHP läuft. Auf den meisten modernen Systemen ist eine Ganzzahl ein 64-Bit-Wert. Das bedeutet, sie kann -9_223_372_036_854_775_808 bis 9_223_372_036_854_775_807 einschließlich darstellen.

<?php

$a = 1234;
$a = 1_234_567;

Du kannst ganzzahlige Literale auch in einer anderen Basis als 10 schreiben, indem du ein Basispräfix verwendest:

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

Übernommen aus der PHP-Dokumentation

Gleitkommazahlen

Gleitkommazahlen werden in PHP verwendet, um einen Teilbereich der reellen Zahlen darzustellen. Sie beginnen mit einer oder mehreren Ziffern, die durch ein Dezimaltrennzeichen getrennt werden.

<?php

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

Häufige Fallstricke

Nicht alle Zahlen und arithmetischen Operationen lassen sich mit Gleitkommazahlen ausführen. Wenn du Gleitkommazahlen verwendest, um Dollar und Cent darzustellen, kann das zu Rundungsfehlern führen.

<?php

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

Arithmetische Operatoren

PHP bietet eine Reihe von Operatoren für arithmetische Operationen. Für seine arithmetischen Operatoren folgt PHP der üblichen mathematischen Reihenfolge der Operationen. Die von PHP bereitgestellten Operatoren sind:

  • Identität (+)
  • Negation (-)
  • Addition (+)
  • Subtraktion (-)
  • Multiplikation (*)
  • Division (/)
  • Modulo (%)
  • Potenzierung (**)
$moles = +'10';
$aLotOfMoles = 6.022 * 10**23 * $moles;

Anleitung

Lilly kocht leidenschaftlich gern. Sie möchte mit ihren Freunden eine Pizza-Party feiern. Um möglichst viel aus ihren Zutaten herauszuholen, muss sie vorher wissen, wie viel sie von jeder Zutat braucht.

Um das zu lösen, hat Lilly ein Programm entworfen, das einen Teil der Planung automatisieren soll, aber sie braucht deine Hilfe, um es fertigzustellen. Hilfst du Lilly dabei, die proportional perfekte Pizza-Party zu feiern?

1. Ein Teigverhältnis

Lilly mag dünne, knusprige Pizzen mit einem dünnen Rand. Der Teig für die Mitte beträgt mindestens 200 g, aber jede Person, die versorgt wird, braucht weitere 20 g Teig.

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

Lilly braucht eine Funktion, die:

  • Die Anzahl der Pizzen entgegennimmt
  • die Anzahl der Personen, die jede Pizza versorgt
  • und den benötigten Teig auf das nächste Gramm gerundet zurückgibt.

Um zum Beispiel 4 Pizzen zu backen, die 8 Personen versorgen:

<?php

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

2. Ein Schuss Soße

Lilly ist sehr genau, wenn sie ihre Soße aufträgt, aber die Größe ihrer Pizzen kann schwanken. Aus ihrer Erfahrung weiß sie, dass sie 125 ml Soße pro Pizza braucht. Lilly braucht eine Funktion, die berechnet, wie viele Dosen Soße sie kaufen muss.

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

Zum Beispiel: Lilly muss 8 Pizzen backen und jede Dose enthält 250 ml:

<?php

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

3. Etwas Käse, bitte

Käse gibt es in perfekten Würfeln und wird nach Größe verkauft.

Die Formel, die Lilly verwendet, ist nicht die Formel für die Fläche der Pizza, denn sie möchte nicht, dass der Käse die gesamte Fläche bedeckt. Sie hat sich entschieden, die folgende Formel zu verwenden, um zu bestimmen, wie viele Pizzen mit einem bestimmten Durchmesser (diameter) aus einem Käsewürfel mit einer bestimmten Seitenlänge (cheese_dimension) gemacht werden können:

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

Erstelle eine Funktion, die:

  • Die Seitenlänge eines Käsewürfels entgegennimmt
  • die gewünschte Dicke der Käseschicht entgegennimmt
  • den Durchmesser der Pizza entgegennimmt
  • und mit Lillys Formel die Anzahl der möglichen Pizzen abgerundet zurückgibt.

Zum Beispiel: ein Käsewürfel von 25x25x25 cm, eine 0,5 cm dicke Käseschicht und Pizzen mit 30 cm Durchmesser:

<?php

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

4. Eine gerechte Aufteilung

Zum Schluss möchte Lilly, dass ihre Pizzen in jeweils 8 Stücke geschnitten und gleichmäßig unter ihren Freunden verteilt werden.

Erstelle eine Funktion, die:

  • eine Anzahl Pizzen und eine Anzahl Freunde entgegennimmt
  • und die Anzahl der Stücke zurückgibt, die übrig bleiben, wenn jede Person gleich viele Stücke nimmt.

Zum Beispiel:

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateLeftOverSlices(2, 4);
// => 0
$pizza_pi->calculateLeftOverSlices(4, 3);
// => 2
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
PHP Exercism

Bereit, mit Pizza Pi zu starten?

Melde dich bei Exercism an, um PHP mit 11 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.