Vc pode fazer a uma versão para os “rubyzeros” entenderem.
(…)
Brincadeirinha… Paz… :lol: :lol: [/quote]
a) Só tem um “l”.
b) Ei, o “rubyzeros” é alguma crítica oculta? :lol: Se for, se ferrou, eu sou Ruby-enthusiast também.
c) Eu procurei manter a convenção de linhas com no máximo 80 caracteres.
Vc pode fazer a uma versão para os “rubyzeros” entenderem.
(…)
Brincadeirinha… Paz… :lol: :lol: [/quote]
a) Só tem um “l”.
b) Ei, o “rubyzeros” é alguma crítica oculta? :lol: Se for, se ferrou, eu sou Ruby-enthusiast também.
c) Eu procurei manter a convenção de linhas com no máximo 80 caracteres.
Brincadeirinha again. :lol:[/quote]
Desculpe pelo l a mais :oops:
Eu tbm sou pró Ruby e acho uma Rails fantastico. Mas eu só fiz essa brincadeira para mostrar que uma boa solução independe da qtde de linhas ou caracteres.
Versao Ruby "clonada" da versao Groovy do Rafael Afonso :lol:
def limpaDir(nameDir, diasAtras)
diaMinimo = Time.now - diasAtras*24*60*60
Dir.glob("#{nameDir}/*.*").each do |f|
File.delete(f) if (File.mtime(f) < diaMinimo)
end
end
limpaDir("/temp/backup", 7)
[quote=WNS]Versao Ruby "clonada" da versao Groovy do Rafael Afonso :lol:
def limpaDir(nameDir, diasAtras)
diaMinimo = Time.now - diasAtras*24*60*60
Dir.glob("#{nameDir}/*.*").each do |f|
File.delete(f) if (File.mtime(f) < diaMinimo)
end
end
limpaDir("/temp/backup", 7)
flw![/quote]
Legal WNS, tinha feito algo muito parecido também, mas tu chegou antes. Mas confesso que estava fazendo mais artesanalmente, não conhecia o Dir.glob
Em Python é fácil. Já deixei meu post lá. Só não sei quanto tempo leva para calcular 200000!
Em MIT Scheme Lisp há uma implementação recursiva na própria documentação que não funciona para n > 30000 aproximadamente; vou ter de reescrever uma implementação iterativa.
def fatorial(n)
i = fat = 1
n.times do
fat = fat * i
i = i + 1
end
fat
end
init = Time.now
puts fatorial(200000)
fini = Time.now
puts "Tempo: " + (fini-init).to_s + "s"
Da última vez que eu testei esse código ele tinha conseguido calcular o fatorial de 10000. O de 200000 eu estou testando agora, se der certo eu aviso!
Edit: Quanto tempo isso demora??? :shock: :shock:
Edit 2: Finalmente! 4219,35 segundos… Uma hora e dez minutos, aproximadamente. E acho que os números gerados pelo programa em Ruby e em Java são iguais… Para criar o arquivo eu simplesmente redirecionei a saída para um arquivo. Depois apaguei tudo que não era fatorial de 200000 dos arquivos gerados pelo ruby e pelo java e usei diff para compará-los.
Vale lembrar que o desafio em si não é quem consegue calcular fatorial com a menor quantidade de linhas de código possível, mas quem consegue calcular o fatorial de um número beeeeeem grande de maneira beeeeeem rápida. No exemplo em Java que foi mostrado como referência, calcular 200000! em um Pentium 4 3.06Ghz (Dual Core), com 1 Gb de RAM usando a JVM 1.5.0_06 sem nenhum tipo de tuning leva aproximadamente 150 segundos (2 minutos e meio).
Seria interessante você ou alguem botar para rodar todas as versões em uma mesma máquina.
Ou usar um denominador comum para equalizar os tempos em diferentes máquinas.
[/quote]
Eu tento, Flávio. Mas é complicado: como vou botar uma aplicação Haskell para executar um fatorial de 200.000! que vai levar quase um dia inteiro? [/quote]
hahahaha… as que vc não conseguir rodar por ai, por falta de tempo ou de ambiente peça ao pessoal que enviar (ou que puder) que rode anote o tempo e envia a spec da máquina.