Πίτσα Pi

Πίτσα Pi

Άσκηση εκμάθησης

Εισαγωγή

Ακέραιοι αριθμοί

Οι ακέραιοι αριθμοί είναι αριθμοί χωρίς δεκαδικό μέρος που ανήκουν στο σύνολο {..., -2, -1, 0, 1, 2, ...}. Η μέγιστη και η ελάχιστη τιμή ενός ακέραιου καθορίζονται από το σύστημα στο οποίο εκτελείται η PHP. Συνήθως, στα περισσότερα σύγχρονα συστήματα, ο ακέραιος είναι μια τιμή 64 bit, που σημαίνει ότι μπορεί να αναπαραστήσει αριθμούς από -9_223_372_036_854_775_808 έως 9_223_372_036_854_775_807 συμπεριλαμβανομένων.

<?php

$a = 1234;
$a = 1_234_567;

Μπορείς να γράψεις ακέραιες τιμές και σε βάση διαφορετική από το 10, χρησιμοποιώντας ένα πρόθεμα βάσης:

<?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 λατρεύει τις λεπτές, τραγανές πίτσες με πιο λεπτή κόρα. Η ζύμη που χρειάζεται για το κέντρο είναι το λιγότερο 200g, αλλά κάθε άτομο που σερβίρεται χρειάζεται άλλα 20g ζύμης.

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

Η Lilly χρειάζεται μια συνάρτηση που:

  • Παίρνει τον αριθμό των πιτσών
  • Τον αριθμό των ατόμων που θα σερβίρει κάθε πίτσα
  • Και επιστρέφει τη ζύμη που χρειάζεται, στρογγυλοποιημένη στο πλησιέστερο γραμμάριο.

Για παράδειγμα, για να φτιάξεις 4 πίτσες που ταΐζουν 8 άτομα:

<?php

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

2. Λίγη σάλτσα

Η Lilly είναι σχολαστική όταν απλώνει τη σάλτσα της, αλλά το μέγεθος των πιτσών της μπορεί να μην είναι σταθερό. Από την εμπειρία της, ξέρει ότι χρειάζονται 125mL σάλτσας ανά πίτσα. Η Lilly χρειάζεται μια συνάρτηση που υπολογίζει πόσα κουτάκια σάλτσας πρέπει να αγοράσει.

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

Για παράδειγμα, αν η Lilly χρειάζεται να φτιάξει 8 πίτσες και κάθε κουτάκι είναι 250mL:

<?php

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

3. Λίγο τυρί, παρακαλώ

Το τυρί έρχεται σε τέλειους κύβους και πωλείται ανά μέγεθος.

Ο τύπος που χρησιμοποιεί η Lily δεν είναι ο τύπος για το εμβαδόν της πίτσας, αφού δεν θέλει το τυρί να καλύπτει ολόκληρη την επιφάνεια. Αποφάσισε να χρησιμοποιήσει τον παρακάτω τύπο για να προσδιορίσει πόσες πίτσες με κάποια διάμετρο (diameter) μπορούν να φτιαχτούν από έναν κύβο τυριού με κάποιο μήκος πλευράς (cheese_dimension):

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

Δημιούργησε μια συνάρτηση που:

  • Παίρνει το μήκος πλευράς ενός κύβου τυριού
  • Παίρνει το επιθυμητό πάχος της στρώσης τυριού
  • Παίρνει τη διάμετρο της πίτσας
  • Και χρησιμοποιεί τον τύπο της Lilly για να επιστρέψει τον αριθμό των πιτσών που μπορούν να φτιαχτούν, στρογγυλοποιημένο προς τα κάτω.

Για παράδειγμα, με έναν κύβο τυριού 25x25x25cm, στρώση τυριού πάχους 0,5cm και πίτσες διαμέτρου 30cm:

<?php

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

4. Δίκαιη μοιρασιά

Τέλος, η Lilly θέλει οι πίτσες της να κόβονται σε 8 κομμάτια η καθεμία και να μοιράζονται δίκαια στους φίλους της.

Δημιούργησε μια συνάρτηση που:

  • Παίρνει έναν αριθμό πιτσών και έναν αριθμό φίλων
  • και επιστρέφει τον αριθμό των κομματιών που θα περισσέψουν αν κάθε άτομο πάρει ίσο αριθμό κομματιών.

Για παράδειγμα:

<?php

$pizza_pi = new PizzaPi();
$pizza_pi->calculateLeftOverSlices(2, 4);
// => 0
$pizza_pi->calculateLeftOverSlices(4, 3);
// => 2
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
PHP Exercism

Έτοιμος να ξεκινήσεις την άσκηση Πίτσα Pi;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις PHP με 11 έννοιες122 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.