Juntaste-te à LinkLine, uma empresa líder de comunicações que trabalha para garantir ligações fiáveis a todos. A equipa enfrenta um grande desafio: os utilizadores submetem números de telefone nos mais variados formatos, com traços, espaços, pontos, parênteses e até prefixos. Alguns números são válidos, outros são impossíveis de usar.
A tua missão é transformar este caos em ordem. Vais limpar os números válidos e formatá-los de forma adequada para serem usados no sistema. Ao mesmo tempo, vais identificar e filtrar as entradas inválidas.
O sucesso das operações da LinkLine depende da tua capacidade de separar o útil do inutilizável. Estás pronto para aceitar o desafio e manter as ligações a funcionar sem problemas?
Limpa números de telefone introduzidos pelos utilizadores, para que lhes possam ser enviadas mensagens SMS.
O Plano de Numeração Norte-Americano (NANP) é um sistema de numeração telefónica utilizado por muitos países da América do Norte, como os Estados Unidos, o Canadá ou as Bermudas.
Todos os países do NANP partilham o mesmo indicativo internacional: 1.
Os números do NANP são números de dez algarismos, compostos por um código de área de três algarismos, comummente conhecido como indicativo de área, seguido de um número local de sete algarismos. Os primeiros três algarismos do número local representam o código de central, seguidos do número único de quatro algarismos, que é o número de assinante.
O formato é habitualmente representado como
NXX NXX-XXXX
em que N é qualquer algarismo de 2 a 9 e X é qualquer algarismo de 0 a 9.
Por vezes, também têm à frente o indicativo de país (representado como 1 ou +1).
A tua tarefa é limpar números de telefone com formatos diferentes, removendo a pontuação e o indicativo de país, se estiver presente.
Por exemplo, as entradas
+1 (613)-995-0253613-995-02531 613 995 0253613.995.0253devem produzir todas o resultado
6139950253
Nota: Como este exercício só lida com números de telefone utilizados em países do NANP, só o 1 é considerado um indicativo de país válido.
Para simplificar e tornar o código mais legível, considera usar as funções de coleção do Scala em vez dos métodos de String do Java.
Lembra-te de que, em Scala, uma String é implicitamente também uma Seq[Char], por isso podes chamá-las tão facilmente como os métodos de String.
Alguns exemplos:
filter em vez de replaceAll
take, takeRight, drop, head, tail em vez de substring
Outra ideia que vale a pena explorar é transformar a String numa List[Char] e depois usar pattern matching com o operador ::.
Inscreve-te no Exercism para aprenderes e dominares Scala com 95 exercícios, e mentoria humana real, tudo grátis.