Διαδρομές
/
PHP
PHP
/
Ασκήσεις
/
Τυχεροί Αριθμοί
Τυχεροί Αριθμοί

Τυχεροί Αριθμοί

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

Εισαγωγή

Ταχυδακτυλουργία τύπων

Η ταχυδακτυλουργία τύπων μπορεί επίσης να αναφέρεται ως εξαναγκασμός τύπων. Η ταχυδακτυλουργία τύπων συμβαίνει όταν δύο τιμές διαφορετικών τύπων εξαναγκάζονται στον ίδιο τύπο για να εκτελεστεί μια πράξη.

$baskets = 5 // int
$apples_per_basket = "3" // string
$baskets * $apples_per_basket
# => 15

Αυτό μπορεί να γίνει έμμεσα (δες το παραπάνω παράδειγμα) ή ρητά με μετατροπή τύπου σε στυλ C:

$apples_per_basket = "3" // string
$my_number = (int) $apples_per_basket // cast string to int
# => 3 // int

Οι επιτρεπόμενοι τύποι για χειροκίνητη μετατροπή τύπου είναι: bool, int, float, string, array, object. Πιο συχνά, η μετατροπή τύπου χρησιμοποιείται για να μετατραπεί ένας ακέραιος (int) σε αριθμό κινητής υποδιαστολής (float) ή αντίστροφα.

Οδηγίες

Ο φίλος σου ο Kojo είναι μεγάλος λάτρης των αριθμών. Έχει μια μικρή ιστοσελίδα για να παίζει με αριθμούς. Ο Kojo δεν είναι και πολύ καλός στον προγραμματισμό, οπότε σου ζήτησε βοήθεια.

Θα φτιάξεις δύο βοηθητικές μεθόδους για νέα παιχνίδια με αριθμούς στην ιστοσελίδα του Kojo και μια τρίτη για να ελέγχεις κάποια είσοδο που μπορεί να πληκτρολογήσει ο χρήστης.

1. Υπολόγισε το άθροισμα των αριθμών στον κουλοχέρη

Ένα από τα παιχνίδια στην ιστοσελίδα του Kojo μοιάζει με κουλοχέρη που δείχνει δύο ομάδες τροχών με ψηφία. Κάθε ομάδα ψηφίων αντιπροσωπεύει έναν αριθμό. Για τη μηχανική του παιχνιδιού, ο Kojo χρειάζεται να ξέρει το άθροισμα αυτών των δύο αριθμών.

Γράψε μια μέθοδο sumUp που δέχεται δύο πίνακες ως παραμέτρους. Κάθε πίνακας αποτελείται από ένα ή περισσότερα ψηφία από το 0 έως το 9. Η συνάρτηση πρέπει να ερμηνεύει κάθε πίνακα ως αριθμό και να επιστρέφει το άθροισμα αυτών των δύο αριθμών.

<?php
$lucky_numbers = new LuckyNumbers()

$lucky_numbers->sumUp([1, 2, 3], [0, 7]);
//=> 130

// [1, 2, 3] represents 123 and [0, 7] represents 7.
// 123 + 7 = 130

2. Βρες αν ένας αριθμός είναι παλίνδρομο

Ένα άλλο παιχνίδι στην ιστοσελίδα είναι ένα μικρό κουίζ που λέγεται "Lucky Numbers". Ο χρήστης μπορεί να πληκτρολογήσει έναν αριθμό και μετά βλέπει αν ο αριθμός ανήκει σε κάποια μυστική ακολουθία ή μοτίβο. Η ακολουθία ή το μοτίβο των "lucky numbers" αλλάζει κάθε μήνα και κάθε χρήστης έχει μόνο περιορισμένο αριθμό προσπαθειών για να το μαντέψει.

Οι "lucky numbers" αυτού του μήνα πρέπει να είναι παλίνδρομοι αριθμοί. Οι παλίνδρομοι αριθμοί παραμένουν ίδιοι όταν αντιστραφούν τα ψηφία τους.

Υλοποίησε τη νέα συνάρτηση isPalindrome που δέχεται έναν ακέραιο ως παράμετρο. Η συνάρτηση πρέπει να επιστρέφει true αν ο αριθμός είναι παλίνδρομο και false διαφορετικά. Ο αριθμός εισόδου θα είναι πάντα ένας θετικός ακέραιος.

<?php
$lucky_numbers = new LuckyNumbers()

$lucky_numbers->isPalindrome(1441);
//=>  true

$lucky_numbers->isPalindrome(123);
//=> false

3. Δημιούργησε μήνυμα σφάλματος για μη έγκυρη είσοδο του χρήστη

Σε διάφορα σημεία της ιστοσελίδας υπάρχουν πεδία εισαγωγής όπου οι χρήστες μπορούν να πληκτρολογήσουν αριθμούς και να πατήσουν ένα κουμπί για να ενεργοποιήσουν κάποια ενέργεια. Ο Kojo θέλει να βελτιώσει την εμπειρία του χρήστη στην ιστοσελίδα του. Θέλει να εμφανίζει ένα μήνυμα σφάλματος σε περίπτωση που ο χρήστης πατήσει το κουμπί αλλά το πεδίο περιέχει μη έγκυρη τιμή εισόδου.

Να μερικές ακόμη πληροφορίες για το πώς παρέχεται η τιμή ενός πεδίου εισαγωγής.

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

Γράψε μια συνάρτηση validate που δέχεται την είσοδο του χρήστη ως παράμετρο. Αν ο χρήστης δεν έδωσε καμία είσοδο, η validate πρέπει να επιστρέφει 'Required field'. Αν η είσοδος δεν αντιπροσωπεύει έναν θετικό ακέραιο διάφορο του μηδενός (σύμφωνα με τους κανόνες μετατροπής τύπων της PHP), πρέπει να επιστραφεί το 'Must be a whole number larger than 0'. Σε όλες τις άλλες περιπτώσεις μπορείς να υποθέσεις ότι η είσοδος είναι έγκυρη, οπότε η τιμή επιστροφής πρέπει να είναι μια κενή συμβολοσειρά.

<?php
$lucky_numbers = new LuckyNumbers()

$lucky_numbers->validate('123');
// => ''

$lucky_numbers->validate('');
// => 'Required field'

$lucky_numbers->validate('abc');
// => 'Must be a whole number larger than 0'
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
PHP Exercism

Έτοιμος να ξεκινήσεις την άσκηση Τυχεροί Αριθμοί;

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