Questão 6: Escreva uma função numeros que receba um número inteiro
e retorne uma String
com números de 1 até
, conforme os exemplo abaixo:
> numeros 5
"1 2 3 4 5"
> numeros 12
"1 2 3 4 5 6 7 8 9 10 11 12"
> numeros 0
""
> numeros 5
"1 2 3 4 5"
> numeros 12
"1 2 3 4 5 6 7 8 9 10 11 12"
> numeros 0
""
Passo 1
Neste exercício, queremos definir uma função e retorna uma separados por espaços. Vamos usar programação funcional em Haskell.
numeros
que recebe um inteiro
String
com os números de 1 até
Passo 2
Precisamos gerar a sequência de números de 1 a
. Em Haskell, isso é feito com a sintaxe de enumeração de listas: .
Depois, para transformar cada inteiro em texto, usamos a função
[1..n]
, que produz a lista de inteiros de 1 até
Depois, para transformar cada inteiro em texto, usamos a função
show
, que converte um valor numérico em sua representação em String
. Aplicamos isso a todos os elementos da lista usando map show [1..n]
.Passo 3
Para juntar todas essas strings com espaços entre elas, usamos ), o resultado é
Basta então combinar essas operações na definição de
intercalate " "
do módulo Data.List
. A função intercalate
recebe um separador e uma lista de strings, retornando uma única string com os elementos intercalados pelo separador. No caso de lista vazia (
""
.Basta então combinar essas operações na definição de
numeros
: gerar a lista, converter para strings e intercalar com espaços.Resposta
import Data.List (intercalate)
numeros :: Int -> String
numeros n = intercalate " " (map show [1…n])
numeros n = intercalate " " (map show [1…n])