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

Zzz

Ajuda Haskell

Recommended Posts

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

Share this post


Link to post
Share on other sites
brunoais

"[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%.

Share this post


Link to post
Share on other 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 ?

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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%.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.