NumPy Project Euler Problem 8
Project Euler Problem 8 requires a lot of string manipulation. Still we have some opportunities to practice our NumPy skills.
1. Calculate the product of the 5 element array
First we need to compute the product of an array with 5 elements. We can calculate the product of the elements in an array with the NumPy prod function.
1
products.append(digits[i:i + 5].prod())
2. Get the max of the products
The products are stored in a Python list. We can convert this to a NumPy array and then find the greatest product with the NumPy max function.
1
print numpy.array(products).max()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import numpy
#Find the greatest product of five consecutive digits in the 1000-digit number.
number = "73167176531330624919225119674426574742355349194934\
96983520312774506326239578318016984801869478851843\
85861560789112949495459501737958331952853208805511\
12540698747158523863050715693290963295227443043557\
66896648950445244523161731856403098711121722383113\
62229893423380308135336276614282806444486645238749\
30358907296290491560440772390713810515859307960866\
70172427121883998797908792274921901699720888093776\
65727333001053367881220235421809751254540594752243\
52584907711670556013604839586446706324415722155397\
53697817977846174064955149290862569321978468622482\
83972241375657056057490261407972968652414535100474\
82166370484403199890008895243450658541227588666881\
16427171479924442928230863465674813919123162824586\
17866458359124566529476545682848912883142607690042\
24219022671055626321111109370544217506941658960408\
07198403850962455444362981230987879927244284909188\
84580156166097919133875499200524063689912560717606\
05886116467109405077541002256983155200055935729725\
71636269561882670428252483600823257530420752963450"
digits = numpy.zeros(1000)
for i in xrange(len(number)):
digits[i] = int(number[i])
products = []
for i in xrange(len(digits) - 5):
#1. Calculate the product of the 5 element array
products.append(digits[i:i + 5].prod())
#2. Get the max of the products
print numpy.array(products).max()
If you liked this post and are interested in NumPy check out NumPy Beginner's Guide by yours truly.
Published on February 18, 2012 06:11
No comments have been added yet.


