On 12/14/2011 09:29 AM, surya k wrote:
________________________________
From: waynejwer...@gmail.com
Date: Wed, 14 Dec 2011 08:25:53 -0600
Subject: Re: [Tutor] where I am going wrong?
To: sur...@live.com
CC: tutor@python.org
On Wed, Dec 14, 2011 at 8:13 AM, surya k
<sur...@live.com<mailto:sur...@live.com>> wrote:
This is a project Euler
puzzle. http://projecteuler.net/problem=30<http://projecteuler.net/problem%3d30>
I applied brute force way and here is my code
k=0for p in range(1,10): for q in range(0,10): for r in
range(0,10): for s in range(0,10): for t in
range(0,10): n = (p*10000)+ (q*1000) + (r*100) + (s*10)
+ (t*1) if n == \ p**5 + q**5 +
r**5 + s**5 + t**5: print n
k+=nprint k
My answer: 240559
But its showing the answer as wrong!!.
I used the same method on the example puzzle and it worked.
Your email client broke the formatting - you should probably use
plain-text or a pastebin.
-Wayne
This is a project Euler puzzle. http://projecteuler.net/problem=30
I applied brute force way and here is my codek=0for p in range(1,10):
for q in range(0,10): for r in range(0,10):
for s in range(0,10): for t in
range(0,10): n = (p*10000)+
(q*1000) + (r*100) + (s*10) + (t*1)
if n == p**5 + q**5 + r**5 + s**5 + t**5:
k+=nprint kMy answer: 240559But its showing the answer
as wrong!!.
I used the same method on the example puzzle and it worked.
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
The new copy you posted was just as bad. Please tell your email program
not to reformat your text. With Thunderbird, I do that by telling it
to use plain-text format for any message that goes to the domain:
python.org. It's under File->preferences->Composition->General->Send
Options. First section "Convert the message to plain text" and second
section, under PlainTextDomain, add python.org
I tried to reflow the source. But 59 columns of indentation is pretty
wild. So I also changed indentation, and maybe got it right.
Your code assumes all the numbers it will find will be 5 digit numbers, which
is a strange assumption. When I try it with **4, I get zero as the result.
All the numbers for that case happen to be exactly 4 digits, while you have 5
nested loops. There's no reason to presuppose the number of digits.
I therefore changed the p range to 0,10, and the if statement to exclude the
solution for 0 and 1.
I also added a global called exp, so we can run it unchanged on either 4 or 5.
exp = 4
k=0
for p in range(0,10):
for q in range(0,10):
for r in range(0,10):
for s in range(0,10):
for t in range(0,10):
n = (p*10000)+ (q*1000) + (r*100) + (s*10) + (t*1)
if n == p**exp + q**exp + r**exp + s**exp + t**exp and p>1:
k+=n
print "one part", n
print k
This still doesn't get the right answer, because it misses at least one
number that has more than 5 digits.
If you just want to get on with it, you could nest several more
for-loops. But you can readily put a coarse upper limit on the largest
match, by trying something like 10* 9**5. See how big that is, and if
it's less than 10 digits long, you have an upper limit. Now you know how
many loops you need.
There are other approaches that don't require you to make a large number
of nested loops. One is to use recursion. Another is to just iterate
through the integers (n), then use str() and list() to turn it into a
bunch of digits, which you then raise to the appropriate power in a
simple loop.
--
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor