mirror of
https://github.com/jlengrand/project_euler.git
synced 2026-03-10 08:41:20 +00:00
Solves problem 43
Starts working on problem 55
This commit is contained in:
@@ -59,6 +59,7 @@ So you may find some of the code here quite ugly. And this is the case :). Why o
|
||||
40 - Finding the nth digit of the fractional part of the irrational number. > 2 sec <br />
|
||||
41 - What is the largest n-digit pandigital prime that exists? < 5 min <br />
|
||||
42 - Using words.txt, a 16K text file containing nearly two-thousand common English words, how many are triangle words? - < 1 sec <br />
|
||||
43 - Find the sum of all pandigital numbers with an unusual sub-string +divisibility property. - 28sec <br />
|
||||
45 - Find the next triangle number that is also pentagonal and hexagonal. - < 1 sec <br />
|
||||
46 - What is the smallest odd composite that cannot be written as the sum of a prime and twice a square? - < 6 sec <br />
|
||||
48 - Find the last ten digits of 1^1 + 2^2 + ... + 1000^1000. - 0.053 <br />
|
||||
@@ -70,7 +71,6 @@ So you may find some of the code here quite ugly. And this is the case :). Why o
|
||||
|
||||
## In progress:
|
||||
|
||||
43 - Find the sum of all pandigital numbers with an unusual sub-string divisibility property. <br />
|
||||
47 - Find the first four consecutive integers to have four distinct primes factors. <br />
|
||||
55 - How many Lychrel numbers are there below ten-thousand? <br />
|
||||
97 - Find the last ten digits of the non-Mersenne prime: 28433 <20> 2^7830457 + 1. <br />
|
||||
|
||||
53
e_43.py
53
e_43.py
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python
|
||||
'''
|
||||
Created on 10 feb. 2012
|
||||
|
||||
@@ -17,8 +17,53 @@ d6d7d8=572 is divisible by 11
|
||||
d7d8d9=728 is divisible by 13
|
||||
d8d9d10=289 is divisible by 17
|
||||
Find the sum of all 0 to 9 pandigital numbers with this property.
|
||||
'''
|
||||
|
||||
Will be very long due to dumb implementation.
|
||||
Would be way better with a generator implementation of all_permutations already
|
||||
'''
|
||||
my_primes = [2, 3, 5, 7, 11, 13, 17]
|
||||
|
||||
|
||||
def all_permutations(seq):
|
||||
"""permutate a sequence and return a list of the permutations"""
|
||||
if not seq:
|
||||
return [seq] # is an empty sequence
|
||||
else:
|
||||
temp = []
|
||||
for k in range(len(seq)):
|
||||
part = seq[:k] + seq[k + 1:]
|
||||
for m in all_permutations(part):
|
||||
temp.append(seq[k:k + 1] + m)
|
||||
return temp
|
||||
|
||||
|
||||
def is_cool(str_number):
|
||||
"""
|
||||
Returns True of number (in a string form) has the cool divisible property
|
||||
"""
|
||||
for i in range(len(str_number) - 3):
|
||||
cur = str_number[i + 1:i + 4]
|
||||
if (int(cur) % my_primes[i]) != 0:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def find_cool_pandigital():
|
||||
"""
|
||||
Returns the sum of all 0 to 9 pandigital numbers with cool property.
|
||||
"""
|
||||
cases = all_permutations("1234567890")
|
||||
cool = []
|
||||
cpt = 0
|
||||
for case in cases:
|
||||
#if int(case[0]) != 0:
|
||||
# check for cool property
|
||||
if is_cool(case):
|
||||
cool.append(int(case))
|
||||
|
||||
print cool
|
||||
print len(cool)
|
||||
return sum(cool)
|
||||
|
||||
if __name__ == '__main__':
|
||||
print 1
|
||||
#print "Answer : %d " % (last_ten())
|
||||
print "Answer : %d " % (find_cool_pandigital())
|
||||
|
||||
28
e_55.py
28
e_55.py
@@ -42,5 +42,31 @@ the theoretical nature of Lychrel numbers.
|
||||
"""
|
||||
|
||||
|
||||
def reverse(num):
|
||||
"""
|
||||
Returns the palidromic number of num
|
||||
"""
|
||||
str_num = str(num)
|
||||
rev = ''
|
||||
for i in range(len(str_num)):
|
||||
rev += str_num[len(str_num) - i - 1]
|
||||
|
||||
return int(rev)
|
||||
|
||||
|
||||
def count_lychrel(max_num, max_it=50):
|
||||
"""
|
||||
Returns the number of lychrel numbers smaller than max_num
|
||||
The maximum iteration number defines how many times the process is repeated
|
||||
before considreing a number to be a lychrel number
|
||||
"""
|
||||
lychrels = []
|
||||
for i in xrange(1, max_num + 1):
|
||||
cur = i
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print "Answer : %d " % (1)
|
||||
print palindrome(12345)
|
||||
#print "Answer : %d " % (count_lychrel(10000))
|
||||
|
||||
Reference in New Issue
Block a user