Percursos
/
PHP
PHP
/
Exercícios
/
Números da sorte
Números da sorte

Números da sorte

Exercício de aprendizagem

Introdução

Conversão de tipos

A conversão de tipos também pode ser conhecida como coerção de tipos. A conversão de tipos acontece quando dois valores de tipos diferentes são convertidos para o mesmo tipo para realizar uma operação.

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

Isto pode ser feito de forma implícita (vê o exemplo acima) ou de forma explícita, com a conversão de tipos ao estilo do C:

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

Os tipos permitidos para a conversão manual são: bool, int, float, string, array, object. O mais comum é usar a conversão de tipos para transformar um número inteiro (int) num número de vírgula flutuante (float), ou vice-versa.

Instruções

O teu amigo Kojo é um grande fã de números. Tem um pequeno site para brincar com números. O Kojo não é muito bom a programar, por isso pediu-te ajuda.

Vais criar dois métodos auxiliares para novos jogos de números no site do Kojo e um terceiro para validar os dados que o utilizador pode introduzir.

1. Calcula a soma dos números na slot machine

Um dos jogos do site do Kojo parece uma slot machine que mostra dois grupos de rodas com algarismos. Cada grupo de algarismos representa um número. Para a mecânica do jogo, o Kojo precisa de saber a soma desses dois números.

Escreve um método sumUp que aceita dois arrays como parâmetros. Cada array é composto por um ou mais algarismos entre 0 e 9. A função deve interpretar cada array como um número e devolver a soma desses dois 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 se um número é uma capicua

Outro jogo do site é um pequeno questionário chamado "Lucky Numbers". O utilizador pode introduzir um número e depois vê se esse número pertence a uma sequência ou padrão secreto. A sequência ou padrão dos "números da sorte" muda todos os meses e cada utilizador só tem um número limitado de tentativas para o adivinhar.

Os números da sorte deste mês devem ser números capicuas. Os números capicuas mantêm-se iguais quando se invertem os algarismos.

Implementa a nova função isPalindrome que aceita um número inteiro como parâmetro. A função deve devolver true se o número for uma capicua e false caso contrário. O número introduzido será sempre um inteiro positivo.

<?php
$lucky_numbers = new LuckyNumbers()

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

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

3. Gera uma mensagem de erro para dados inválidos do utilizador

Em vários sítios do site há campos de introdução onde os utilizadores podem escrever números e clicar num botão para desencadear uma ação. O Kojo quer melhorar a experiência de utilização do seu site. Quer mostrar uma mensagem de erro caso o utilizador clique no botão mas o campo contenha um valor inválido.

Eis mais alguma informação sobre como é fornecido o valor de um campo de introdução.

  • Se o utilizador escrever algo num campo, o valor associado é sempre uma string, mesmo que o utilizador só tenha escrito números.
  • Se o utilizador escrever algo mas apagar de seguida, a variável será uma string vazia.
  • Antes de o utilizador começar a escrever, a variável será uma string vazia.

Escreve uma função validate que aceita o valor introduzido pelo utilizador como parâmetro. Se o utilizador não introduziu nada, validate deve devolver 'Required field'. Se o que foi introduzido não representar um número inteiro positivo diferente de zero (de acordo com as regras de conversão de tipos do PHP), deve ser devolvido 'Must be a whole number larger than 0'. Em todos os outros casos podes assumir que o valor introduzido é válido; nesse caso, o valor devolvido deve ser uma string vazia.

<?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 via GitHub A ligação abre numa nova janela ou separador
PHP Exercism

Estás pronto para começar Números da sorte?

Inscreve-te no Exercism para aprenderes e dominares PHP com 11 conceitos122 exercícios, e mentoria humana real, tudo grátis.