Parcours
/
PHP
PHP
/
Exercices
/
Nombres porte-bonheur
Nombres porte-bonheur

Nombres porte-bonheur

Exercice d'apprentissage

Introduction

Jonglage de types

Le jonglage de types, aussi appelé coercition de types, se produit quand deux valeurs de types différents sont converties vers un même type pour effectuer une opération.

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

Cette conversion peut se faire de manière implicite (comme dans l'exemple ci-dessus) ou explicite, à l'aide d'un transtypage à la manière du C :

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

Les types autorisés pour le transtypage manuel sont : bool, int, float, string, array, object. Le plus souvent, le transtypage sert à convertir un entier (int) en nombre décimal (float), ou l'inverse.

Instructions

Ton ami Kojo est un grand fan des nombres. Il a un petit site web pour jouer avec les nombres. Kojo n'est pas très bon en programmation, alors il t'a demandé de l'aide.

Tu vas créer deux méthodes utilitaires pour de nouveaux jeux de nombres sur le site de Kojo, ainsi qu'une troisième pour valider certaines entrées que l'utilisateur peut saisir.

1. Calcule la somme des nombres sur la machine à sous

L'un des jeux du site de Kojo ressemble à une machine à sous qui affiche deux groupes de roues avec des chiffres dessus. Chaque groupe de chiffres représente un nombre. Pour la mécanique du jeu, Kojo a besoin de connaître la somme de ces deux nombres.

Écris une méthode sumUp qui prend deux tableaux en paramètres. Chaque tableau est composé d'un ou plusieurs chiffres compris entre 0 et 9. La fonction doit interpréter chaque tableau comme un nombre et renvoyer la somme de ces deux nombres.

<?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. Détermine si un nombre est un palindrome

Un autre jeu du site est un petit quiz appelé « Numéros chanceux ». L'utilisateur peut saisir un nombre et voit ensuite si ce nombre appartient à une séquence ou à un motif secret. La séquence ou le motif des numéros chanceux change chaque mois, et chaque utilisateur ne dispose que d'un nombre limité d'essais pour le deviner.

Les numéros chanceux de ce mois-ci doivent être des nombres palindromes. Les nombres palindromes restent identiques lorsqu'on inverse leurs chiffres.

Implémente la nouvelle fonction isPalindrome qui prend un entier en paramètre. La fonction doit renvoyer true si le nombre est un palindrome et false sinon. Le nombre en entrée sera toujours un entier positif.

<?php
$lucky_numbers = new LuckyNumbers()

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

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

3. Génère un message d'erreur pour une entrée utilisateur invalide

À divers endroits du site, il y a des champs de saisie où les utilisateurs peuvent saisir des nombres et cliquer sur un bouton pour déclencher une action. Kojo veut améliorer l'expérience utilisateur de son site. Il veut afficher un message d'erreur dans le cas où l'utilisateur clique sur le bouton mais que le champ contient une valeur d'entrée invalide.

Voici quelques informations supplémentaires sur la manière dont la valeur d'un champ de saisie est fournie.

  • Si l'utilisateur saisit quelque chose dans un champ, la valeur associée est toujours une string, même s'il n'a saisi que des chiffres.
  • Si l'utilisateur saisit quelque chose puis l'efface, la variable sera une string vide.
  • Avant même que l'utilisateur ne commence à saisir quoi que ce soit, la variable sera une string vide.

Écris une fonction validate qui prend en paramètre l'entrée de l'utilisateur. Si l'utilisateur n'a fourni aucune entrée, validate doit renvoyer 'Required field'. Si l'entrée ne représente pas un nombre entier positif non nul (d'après les règles de transtypage de PHP), validate doit renvoyer 'Must be a whole number larger than 0'. Dans tous les autres cas, on peut supposer que l'entrée est valide ; la valeur de retour doit alors être une string vide.

<?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'
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
PHP Exercism

Prêt à commencer Nombres porte-bonheur ?

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