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

nvieira

Problema para resolver...

3 mensagens neste tópico

Pretende-se substituir todas as ocorrências de uma sequência de números (i.e. sem qualquer outro número no meio da sequência inicial) dentro  de outra por uma terceira sequência de números. Apresente uma função Haskell recebendo três argumentos, que apresente o comportamento pretendido.

-- Ex:

-- Argumentos: (1 2 1) (9 9) ( 1 2 1 2 1 4 1 2 3 1 5 1 2 1 8 9)

-- Resultado: (9 9 21 4 1 2 3 1 5 9 9 8 9)

Imagino que não seja muito complicado, mas estou no inicio.

Grato pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pressuponho que os argumentos sejam listas, certo?

isto deve ajudar...

sub :: [int] -> [int] -> [int] -> [int]
sub l1 l2 [] = []
sub l1 l2 l3 = let size = length l1
               in if take size l3 == l1
                     then ...
                     else ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela ajuda. Já compleitei o resto da função.

Não é para funcionar com listas, mas para isso basta trocar o tipo das variaveis para String.

sub :: String -> String -> String -> String
sub l1 l2 [] = []
sub l1 l2 l3 = let size = length l1
               in if take size l3 == l1
                     then l2 ++ sub l1 l2 (drop size l3)	
                     else head l3 : sub l1 l2 (tail l3)

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