Números especiais

Secção dedicada à linguagem de programação favorita dos quarkianos: Python!

Números especiais

Mensagempor Bruno Oliveira em Segunda Fev 09, 2009 11:16 pm

Project Euler: Problem 30

Surpreendentemente, existem apenas 3 números que podem ser escritos como a soma da quarta potência dos seus dígitos e eles são:

1634=1^4+6^4+3^4+4^4

8208=8^4+2^4+0^4+8^4

9474=9^4+4^4+7^4+4^4

A soma destes 3 números é: 1634+8208+9474=19316

O desafio é encontrar a soma de todos os números que podem ser escritos como a soma da quinta potência dos seus dígitos :roll:
e^{ix}=cos x + i\,sin x
Avatar do utilizador
Bruno Oliveira
top-Quark!
top-Quark!
 
Mensagens: 1553
Registado: Quarta Nov 14, 2007 10:19 pm
Localização: Lisboa

Re: Números especiais

Mensagempor jap em Segunda Fev 09, 2009 11:27 pm

Giro. Não me parece muito difícil...quem quer tentar resolvê-lo pitonicamente? :P
José António Paixão
Departamento de Física da FCTUC
Avatar do utilizador
jap
Site Admin
Site Admin
 
Mensagens: 6790
Registado: Quinta Nov 09, 2006 9:34 pm
Localização: Univ. de Coimbra

Re: Números especiais

Mensagempor Ivo_Timóteo em Terça Fev 10, 2009 1:13 am

Esse eu já "limpei" :)

Mas não foi nada pitónico :lol:
Avatar do utilizador
Ivo_Timóteo
charm-Quark!
charm-Quark!
 
Mensagens: 579
Registado: Quarta Nov 15, 2006 7:25 pm
Localização: V. N. Gaia

Re: Números especiais

Mensagempor Bruno Oliveira em Terça Fev 10, 2009 6:30 pm

Pois eu estou desesperado, experimentei fazer tal e qual o que diz o problema, fazer que um numero é igual á soma dos seus dígitos elevados á quinta potência, com as strings, mas tinha de andar a alterar os números, por causa do comprimento deles, depois obtive uma lista e grande e tentei somá-los...bad luck :twisted:
e^{ix}=cos x + i\,sin x
Avatar do utilizador
Bruno Oliveira
top-Quark!
top-Quark!
 
Mensagens: 1553
Registado: Quarta Nov 14, 2007 10:19 pm
Localização: Lisboa

Re: Números especiais

Mensagempor jap em Terça Fev 10, 2009 6:54 pm

Bruno Oliveira Escreveu:Pois eu estou desesperado, experimentei fazer tal e qual o que diz o problema, fazer que um numero é igual á soma dos seus dígitos elevados á quinta potência, com as strings, mas tinha de andar a alterar os números, por causa do comprimento deles...:


Hum? Não tens de te preocupar com o comprimento, de certeza, posta aqui o código e explica o que pretendes fazer que a gente pitoniza-o aqui. :wink:
José António Paixão
Departamento de Física da FCTUC
Avatar do utilizador
jap
Site Admin
Site Admin
 
Mensagens: 6790
Registado: Quinta Nov 09, 2006 9:34 pm
Localização: Univ. de Coimbra

Re: Números especiais

Mensagempor jap em Terça Fev 10, 2009 7:23 pm

Ivo, quanto é que te deu o resultado do problema? :roll:

Eu obtive 443840 (contando com 0 e 1 que me parece que também satisfazem as condições do enunciado). Confere com o teu resultado? :roll:
José António Paixão
Departamento de Física da FCTUC
Avatar do utilizador
jap
Site Admin
Site Admin
 
Mensagens: 6790
Registado: Quinta Nov 09, 2006 9:34 pm
Localização: Univ. de Coimbra

Re: Números especiais

Mensagempor Bruno Oliveira em Terça Fev 10, 2009 7:34 pm

Entretanto desisti do código, estava já muito baralhado e decidi apagar para começar a pensar de novo só que depois nem tive tempo... :twisted:
e^{ix}=cos x + i\,sin x
Avatar do utilizador
Bruno Oliveira
top-Quark!
top-Quark!
 
Mensagens: 1553
Registado: Quarta Nov 14, 2007 10:19 pm
Localização: Lisboa

Re: Números especiais

Mensagempor jap em Terça Fev 10, 2009 7:46 pm

O resultado do meu programa (originalmente era uma única linha de python, mas já o descomprimi para ficar mais legível, e porque o Ivo não gosta de oneliners :lol:) é:

Código: Seleccionar Todos
% python p5.py
Maximum number of digits to search 6
Please wait...
The numbers are [0, 1, 4150, 4151, 54748, 92727, 93084, 194979]
and their sum is 443840
José António Paixão
Departamento de Física da FCTUC
Avatar do utilizador
jap
Site Admin
Site Admin
 
Mensagens: 6790
Registado: Quinta Nov 09, 2006 9:34 pm
Localização: Univ. de Coimbra

Re: Números especiais

Mensagempor Bruno Oliveira em Terça Fev 10, 2009 7:47 pm

Prof. de facto tanto o 0 como o 1, satisfazem as condições do problema, mas eles dizem para não contar com o 1, pois é uma soma de dígitos, então a resposta é 443839.

As1 = 1^4 is not a sum it is not included.
última vez editado por Bruno Oliveira s Terça Fev 10, 2009 7:57 pm, editado 1 vez no total
e^{ix}=cos x + i\,sin x
Avatar do utilizador
Bruno Oliveira
top-Quark!
top-Quark!
 
Mensagens: 1553
Registado: Quarta Nov 14, 2007 10:19 pm
Localização: Lisboa

Re: Números especiais

Mensagempor jap em Terça Fev 10, 2009 7:50 pm

Bruno Oliveira Escreveu:Prof. de facto tanto o 0 como o 1, satisfazem as condições do problema, mas eles dizem para não contar com o 1, pois é uma soma de dígitos, então a resposta é 443839,de facto é estranho, pois esta resposta conta com o 0 que obviamente está nas mesmas condições do 1 e não deveria ser contado... :twisted:

As1 = 1^4 is not a sum it is not included.


Bem, eu tenderia a generalizar o conceito de "soma" :lol:, mas se eles entendem que não é para contar com os casos de 1 só dígito porque, de facto, aí não se faz soma nenhuma, também é fácil de alterar o programa... :lol: e então confere:

Código: Seleccionar Todos
Maximum number of digits to search 6
Please wait...
The numbers are [4150, 4151, 54748, 92727, 93084, 194979]
and their sum is 443839


Basta escrever uma função para fazer a soma da m-ésima potência dos dígitos do número n, o resto é fácil. :wink:
José António Paixão
Departamento de Física da FCTUC
Avatar do utilizador
jap
Site Admin
Site Admin
 
Mensagens: 6790
Registado: Quinta Nov 09, 2006 9:34 pm
Localização: Univ. de Coimbra

Re: Números especiais

Mensagempor Bruno Oliveira em Terça Fev 10, 2009 7:55 pm

Pois é mesmo essa função que eu não consegui fazer :(
e^{ix}=cos x + i\,sin x
Avatar do utilizador
Bruno Oliveira
top-Quark!
top-Quark!
 
Mensagens: 1553
Registado: Quarta Nov 14, 2007 10:19 pm
Localização: Lisboa

Re: Números especiais

Mensagempor jap em Terça Fev 10, 2009 7:57 pm

Bruno Oliveira Escreveu:Pois é mesmo essa função que eu não consegui fazer :(


Código: Seleccionar Todos
def sumdigits(n,m):
    "sum of the mth power of the digits of n"
    return sum(map(lambda c: int(c)**m,str(n)))
José António Paixão
Departamento de Física da FCTUC
Avatar do utilizador
jap
Site Admin
Site Admin
 
Mensagens: 6790
Registado: Quinta Nov 09, 2006 9:34 pm
Localização: Univ. de Coimbra

Re: Números especiais

Mensagempor Ivo_Timóteo em Terça Fev 10, 2009 8:05 pm

Sim, o resultado correcto é 443839 :)

O problema em si é fácil de passar para código, mesmo muito fácil... E de ter accepted no PE também :)

Mas como saber que não há números maiores que N que satisfazem a condição? Que N é esse?
Embora ligeiramente fora do âmbito do Quark!, podem tentar demonstrar :) É mesmo muito fácil :D
Avatar do utilizador
Ivo_Timóteo
charm-Quark!
charm-Quark!
 
Mensagens: 579
Registado: Quarta Nov 15, 2006 7:25 pm
Localização: V. N. Gaia

Re: Números especiais

Mensagempor Bruno Oliveira em Terça Fev 10, 2009 8:20 pm

Novamente as lambda functions! :D

Tenho de ver se as domino de vez, são muito utilizadas e decerto que se as dominar poderei resolver muitos outros problemas do project euler! :wink:

Obrigado prof. :)
e^{ix}=cos x + i\,sin x
Avatar do utilizador
Bruno Oliveira
top-Quark!
top-Quark!
 
Mensagens: 1553
Registado: Quarta Nov 14, 2007 10:19 pm
Localização: Lisboa

Re: Números especiais

Mensagempor Ivo_Timóteo em Terça Fev 10, 2009 8:28 pm

Já agora Bruno, qual e o teu 'nome' no PE? És português?
Avatar do utilizador
Ivo_Timóteo
charm-Quark!
charm-Quark!
 
Mensagens: 579
Registado: Quarta Nov 15, 2006 7:25 pm
Localização: V. N. Gaia

Próximo

Voltar para Pitónica

Quem está ligado

Utilizadores a navegar neste fórum: Nenhum utilizador registado e 1 visitante