• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jamirooo

[Resolvido] Concatenação de Strings dentro de uma Lista

3 mensagens neste tópico

Boas....tenho o seguinte exercicio:

frase :: Int -> [(Int,String) ]-> String que devolve a string resultante de concatenar (mantendo a ordem) as strings dos pares contidos na lista dada como segundo argumento, que emparelham com valores iguais ao primeiro argumento. Exemplo: frase 3 [(3,"o pai"),(5,"viva "),(3," Natal "),(1,"mar azul"),(3,"não existe"),(1,"areia branca")] resulta em "o pai Natal não existe".

e o que fiz foi:

frase _ [ ] = [ ]
frase y (x:xs) |fst x == y = snd x:frase y xs
       |otherwise = frase y xs  

que resulta em: ["o pai"," Natal","nao existe"]

O que eu queria agora, como o proprio topico indica, era concatenar as 3 partes de String exeistentes na lista e eliminar os parenteses da lista, para que se pareça com o resultado exigido no exercicio...

Obrigado desde já! :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que isto deve resolver o problema.

frase _ [ ] = [ ]
frase y (x:xs) | fst x == y = (snd x) ++ (frase y xs)
               | otherwise = frase y xs  

Também podias usar a função concat.

Já agora, uma implementação alternativa:

frase n l=concat.(map snd).(filter ((==n).fst))$l

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois...tentei com o concat, mas nao sabia muito bem onde o colocar :-[...da tua maneira ta optimo... Obrigado! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora