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.
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.
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
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
À 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.
É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'
Inscris-toi sur Exercism pour apprendre et maîtriser PHP avec 11 concepts122 exercices, et un vrai mentorat humain, le tout gratuitement.