Track
/
PHP
PHP
/
Esercizi
/
Numeri fortunati
Numeri fortunati

Numeri fortunati

Esercizio di apprendimento

Introduzione

Type juggling

Il type juggling è anche noto come coercizione di tipo. Il type juggling si verifica quando due valori di tipi diversi vengono forzati allo stesso tipo per eseguire un'operazione.

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

Questo può avvenire in modo implicito (vedi l'esempio sopra) oppure in modo esplicito con il cast di tipo in stile C:

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

I tipi consentiti per il cast di tipo manuale sono: bool, int, float, string, array, object. Più comunemente, il cast di tipo viene usato per convertire un numero intero (int) in un numero in virgola mobile (float) o viceversa.

Istruzioni

Il tuo amico Kojo è un grande appassionato di numeri. Ha un piccolo sito web su cui giocare con i numeri. Kojo non è molto bravo a programmare, quindi ti ha chiesto aiuto.

Costruirai due metodi ausiliari per i nuovi giochi con i numeri sul sito di Kojo e un terzo per validare alcuni input che l'utente può inserire.

1. Calcola la somma dei numeri sulla slot machine

Uno dei giochi sul sito di Kojo assomiglia a una slot machine che mostra due gruppi di rulli con delle cifre. Ogni gruppo di cifre rappresenta un numero. Per la meccanica del gioco, Kojo ha bisogno di conoscere la somma di questi due numeri.

Scrivi un metodo sumUp che accetta due array come parametri. Ogni array è composto da una o più cifre tra 0 e 9. La funzione deve interpretare ogni array come un numero e restituire la somma di questi due numeri.

<?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. Determina se un numero è un palindromo

Un altro gioco sul sito è un piccolo quiz chiamato «Numeri fortunati». Un utente può inserire un numero e poi vedere se quel numero appartiene a una qualche sequenza o schema segreti. La sequenza o lo schema dei «numeri fortunati» cambia ogni mese e ogni utente ha solo un numero limitato di tentativi per indovinarlo.

I numeri fortunati di questo mese devono essere numeri palindromi. I numeri palindromi restano uguali quando si invertono le cifre.

Implementa la nuova funzione isPalindrome che accetta un numero intero come parametro. La funzione deve restituire true se il numero è un palindromo e false in caso contrario. Il numero di input sarà sempre un intero positivo.

<?php
$lucky_numbers = new LuckyNumbers()

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

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

3. Genera un messaggio di errore per input non valido dell'utente

In vari punti del sito ci sono campi di input dove gli utenti possono inserire numeri e fare clic su un pulsante per attivare un'azione. Kojo vuole migliorare l'esperienza utente del suo sito. Vuole mostrare un messaggio di errore nel caso in cui l'utente faccia clic sul pulsante ma il campo contenga un valore di input non valido.

Ecco qualche informazione in più su come viene fornito il valore di un campo di input.

  • Se l'utente digita qualcosa in un campo, il valore associato è sempre una stringa, anche se l'utente ha digitato solo numeri.
  • Se l'utente digita qualcosa ma poi lo cancella, la variabile sarà una stringa vuota.
  • Prima ancora che l'utente inizi a digitare, la variabile sarà una stringa vuota.

Scrivi una funzione validate che accetta l'input dell'utente come parametro. Se l'utente non ha fornito alcun input, validate deve restituire 'Required field'. Se l'input non rappresenta un numero intero positivo diverso da zero (secondo le regole di conversione di tipo di PHP), deve essere restituito 'Must be a whole number larger than 0'. In tutti gli altri casi puoi presumere che l'input sia valido; in tal caso il valore restituito deve essere una stringa vuota.

<?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'
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
PHP Exercism

Vuoi iniziare Numeri fortunati?

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