Rutas
/
PHP
PHP
/
Ejercicios
/
Números de la suerte
Números de la suerte

Números de la suerte

Ejercicio de aprendizaje

Introducción

Malabares de tipos

Los malabares de tipos también se conocen como coerción de tipos. Los malabares de tipos se producen cuando dos valores de tipos distintos se convierten al mismo tipo para poder realizar una operación.

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

Esto puede ocurrir de forma implícita (como en el ejemplo anterior) o explícita, con una conversión de tipos al estilo de C:

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

Los tipos permitidos para la conversión manual de tipos son: bool, int, float, string, array, object. Lo más habitual es usar la conversión de tipos para cambiar un número entero (int) a un número decimal (float) o viceversa.

Instrucciones

Tu amigo Kojo es un gran aficionado a los números. Tiene una pequeña web para jugar con números. Kojo no es muy bueno programando, así que te ha pedido ayuda.

Vas a crear dos métodos auxiliares para los nuevos juegos de números de la web de Kojo y un tercero para validar los datos que puede introducir el usuario.

1. Calcula la suma de los números de la tragaperras

Uno de los juegos de la web de Kojo es una máquina tragaperras que muestra dos grupos de ruedas con dígitos. Cada grupo de dígitos representa un número. Para la mecánica del juego, Kojo necesita saber la suma de esos dos números.

Escribe un método sumUp que acepte dos arrays como parámetros. Cada array consta de uno o varios dígitos entre el 0 y el 9. La función debe interpretar cada array como un número y devolver la suma de esos dos números.

<?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 si un número es un palíndromo

Otro de los juegos de la web es un pequeño concurso llamado «Números de la suerte». El usuario introduce un número y ve si ese número pertenece a alguna secuencia o patrón secreto. La secuencia o el patrón de los «números de la suerte» cambia cada mes, y cada usuario solo tiene un número limitado de intentos para adivinarlo.

Los números de la suerte de este mes deben ser números que sean palíndromos. Los números palindrómicos siguen siendo los mismos cuando se invierten sus dígitos.

Implementa la nueva función isPalindrome, que acepta un número entero como parámetro. La función debe devolver true si el número es un palíndromo y false en caso contrario. El número que se pasa como entrada siempre será un número entero positivo.

<?php
$lucky_numbers = new LuckyNumbers()

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

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

3. Genera un mensaje de error para entradas de usuario no válidas

En varios lugares de la web hay campos de entrada donde los usuarios pueden escribir números y pulsar un botón que desencadena alguna acción. Kojo quiere mejorar la experiencia de usuario de su web. Quiere mostrar un mensaje de error si el usuario pulsa el botón pero el campo contiene un valor de entrada no válido.

Aquí tienes algo más de información sobre cómo se proporciona el valor de un campo de entrada.

  • Si el usuario escribe algo en un campo, el valor asociado siempre es un string, aunque solo haya escrito números.
  • Si el usuario escribe algo pero luego lo borra, la variable será un string vacío.
  • Antes de que el usuario empiece a escribir, la variable ya es un string vacío.

Escribe una función validate que acepte la entrada del usuario como parámetro. Si el usuario no ha proporcionado ninguna entrada, validate debe devolver 'Required field'. Si la entrada no representa un número entero positivo distinto de cero (según las reglas de conversión de tipos de PHP), debe devolver 'Must be a whole number larger than 0'. En todos los demás casos puedes dar por hecho que la entrada es válida; entonces el valor devuelto debe ser un string vacío.

<?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'
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
PHP Exercism

¿Listo para empezar Números de la suerte?

Regístrate en Exercism para aprender y dominar PHP con 11 conceptos122 ejercicios y mentoría humana real, todo gratis.