Por isto que vcs manjam pra caramba de lisp são matematicos, imagina quem
não é, como fica num papo destes.
masp

2009/4/30 Gustavo <[email protected]>

>
> 2009/4/30 Gilzamir Gomes <[email protected]>
>
>>
>> Com programação dinâmica, independente de linguagem de programação, é
>> possível calcular o fatorial rapidamente. No entanto, um tradeoff em
>> ciência da computação é justamente desempenho x consumo de memória. Em
>> C, por exemplo, não é difícil programar um tipo de dados de precisão
>> arbitrária. No livro Programming Challenges, informações
>> bibliográficas em
>> http://www.programming-challenges.com/pg.php?page=index), tem
>> explicando como fazer isso, acho que no capítulo 5. E linguagens e
>> ambientes de desenvolvimento atuais fornecem classes ou tipos de dados
>> com precisão arbitrária, como a classe BigInteger em Java.
>>
>> Eu tenho mostrado como resolver o problema 3n+1 utilizando uma técnica
>> que pode ser utilizada para calcular o fatorial de números grandes.
>> Melhorou muito o desempenho para o problema 3n+1. Tem que ver como
>> adaptar ao cálculo do fatorial. Como posso disponibilizar o arquivo?
>
>
> Você pode usar o http://paste.lisp.org/ .
>
>
>>
>> Posso simplesmente anexar e enviar para a lista? Vou tentar adicionar
>> em algum disco virtual e mandar o link.
>>
>> Comecei a estudar lisp, mas meu tempo está muito dividido. Atualmente
>> progromo em Java, C, C++ e Prolog. Enviei a mensagem porque falava do
>> cálculo do fatorial. E eu lembrei que a técnica que utilizei para o
>> problema 3n+1 poderia ser utilizada para otimizar o cálculo do
>> fatorial. Se vocês acharem que o post está off-topic, ignorem ou
>> mandem um aviso.
>>
>>
>>
>> Estou treinando uma equipe da Universidade
>>
>> 2009/4/30 Mario Domenech Goulart <[email protected]>:
>> >
>> > Alô pessoal.
>> >
>> > On Thu, 30 Apr 2009 00:36:22 -0700 (PDT) namekuseijin <
>> [email protected]> wrote:
>> >
>> >> Muito bom e exaustivo por sinal
>> >
>> > Passando os olhos rapidamente, não vi algumas possibilidades de cálculo
>> > de fatorial bem simples com Lisp (usando 10! nos exemplos e Chicken
>> > Scheme -- http://www.call-with-current-continuation.org).
>> >
>> > O fatorial de 10 é (* 10 9 8 7 6 5 4 3 2):
>> >
>> > $ cat eval-fact.scm
>> > #! /usr/bin/csi -s
>> >
>> > (use numbers srfi-1)
>> >
>> > (print (eval `(* . ,(iota 10 1))))
>> >
>> > $ ./eval-fact.scm
>> > 3628800
>> >
>> >
>> > Chicken possui uma limitação quanto ao número de argumentos que
>> > procedimentos podem receber (normalmente 1000).  Assim, para fatorial de
>> > números maiores que 1000 essa estratégia não funciona.  Mas pode-ser
>> > usar `reduce':
>> >
>> > $ cat reduce-fact.scm
>> > #!/usr/bin/csi -s
>> >
>> > (use numbers srfi-1)
>> >
>> > (print (reduce * '() (iota 10 1)))
>> >
>> >
>> > $ ./reduce-fact.scm
>> > 3628800
>> >
>> >
>> > Ou, ainda (apelando para a malandragem), fazendo parte do trabalho em
>> > tempo de compilação. :-)
>> >
>> > $ cat macro-fact.scm
>> > #!/usr/bin/csi -script
>> >
>> > (use numbers srfi-1)
>> >
>> > (define-macro (fact n)
>> >  `,(reduce * '() (iota n 1)))
>> >
>> > (print (fact 10))
>> >
>> > $ ./macro-fact.scm
>> > 3628800
>> >
>> >
>> > Um abraço.
>> > Mario
>> >
>> > >
>> >
>>
>>
>>
>
> >
>


-- 
Marcelino Pinheiro
11-9177-8622

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lisp-br" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/lisp-br?hl=en
-~----------~----~----~----~------~----~------~--~---

Responder a