Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Zzz

Ajuda Haskell

Mensagens Recomendadas

Zzz

Boas pessoal

Tenho aqui uma pequena duvida, gostava de saber se alguém me pode ajudar?

Alterar a ordem de duas listas

por exemplo

n = [("aaa",150,[(0.0,"aaa","aaa)]),("bb",150,[(0.0,"bbb","bbb)]),("ccc",150,[(0.0,"ccc","ccc)])]

é possivel trocar a ordem entre eles? aparecer primero n = [("ccc",150,[(0.0,"ccc","ccc)]),("bb",150,[(0.0,"bbb","bbb)]),("aaa",150,[(0.0,"aaa","aaa)])] ??

Aguardo uma resposta, desde ja muito obrigado :thumbsup:

Cumps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Kowbak

reverse n

essa e a resposta que procuras

Mundo, se bem que percebi e espero não tar errada o que ele tá a procura é de uma função que altere um com o outro e não, uma que inverta a lista, essa que lhe deste faz isso ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Zzz

Mundo, se bem que percebi e espero não tar errada o que ele tá a procura é de uma função que altere um com o outro e não, uma que inverta a lista, essa que lhe deste faz isso ?

Exactamente eu quero uma que altera a ordem, e não assim como fizeste, parece que esta complicado ajudar me..

Desde já agradeço a todos, caso alguém consiga ajudar, que faça um post...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Betovsky

Exactamente eu quero uma que altera a ordem, e não assim como fizeste, parece que esta complicado ajudar me..

Desde já agradeço a todos, caso alguém consiga ajudar, que faça um post...

Mas não é isso o que o link faz que o Badereus indicou?

A única diferença em que no outro lado é uma lista de Ints em vez de tuplos. Mas fazer essa alteração será básico.


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Explica, sff, porque é que o reverse n funciona.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Betovsky

Não, com o link que ele enviou, não consigo aproveitar nada..

Então ninguém me consegue ajudar de outra forma?

Pegando no link que ele enviou e embelezando o código e pondo-o mais genérico. Para o teu caso ficaria:

import Control.Arrow

troca i1 i2 l = troca' (min i1 i2) (max i1 i2) l

troca' i1 i2 = loop (fun initialIndex defaultValue)
    where
    defaultValue = ("",0,[])
    initialIndex = 1
    fun _ s ([], a) = ([], s)
    fun i s (x:xs, a) | i == i1 = let (l, a') = fun (i+1) x (xs, a)
                                      in (a':l, a')
                      | i == i2 = (s:xs, x)
                      | otherwise = let (l, a') = fun (i+1) s (xs, a)
                                    in (x:l, a')

Como podes ver é praticamente a mesma coisa... Bem longe do não conseguir aproveitar nada.

Ok, modules loaded: Main.
*Main> troca 1 3 [("aaa", 150, [(0.0, "aaa", "aaa")]), ("bb", 150, [(0.0, "bbb", "bbb")]), ("ccc", 150, [(0.0, "ccc", "ccc")])]
[("ccc",150,[(0.0,"ccc","ccc")]),("bb",150,[(0.0,"bbb","bbb")]),("aaa",150,[(0.0,"aaa","aaa")])]
*Main>


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mundo

Exactamente eu quero uma que altera a ordem, e não assim como fizeste, parece que esta complicado ajudar me..

Desde já agradeço a todos, caso alguém consiga ajudar, que faça um post...

Sim ajuda, porque o que ele quer trocar sao tuplos, e nao valores em separado, ou seja tuplos podem ser tratados como algo "comprimido", sendo que é possivel aplicar a função reverse, e nao penso que seja algo do outro mundo para se fazer lol

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.