NumPy Project Euler Problem 8

This entry is part 8 of 9 in the series NumPy Project Euler

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.

Series NavigationNumPy Project Euler Problem 7NumPy Project Euler Problem 9
By the author of NumPy Beginner's Guide, NumPy Cookbook and Instant Pygame. If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.
Share
This entry was posted in programming and tagged , , , . Bookmark the permalink.