HiveBrain v1.2.0
Get Started
← Back to all entries
patternpythonMinor

Answer to an implementation of Project Euler #8

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
implementationprojectanswereuler

Problem

I saw that there was a previous question asking to review an answer to the Project Euler question #8. My answer didn't look anything like the answer in that question and as a beginner, I was wondering if someone would take a look at my answer and let me know if there is anything I could improve upon.

```
#Project Euler #8

'''
The four adjacent digits in the 100 digit number that have the greatest
product are 9x9x8x9 = 5832.

Find the 13 adjacent digits in the 1000 digit number that have the
greatest product
'''

n = '\
73167176531330624919225119674426574742355349194934\
96983520312774506326239578318016984801869478851843\
85861560789112949495459501737958331952853208805511\
12540698747158523863050715693290963295227443043557\
66896648950445244523161731856403098711121722383113\
62229893423380308135336276614282806444486645238749\
30358907296290491560440772390713810515859307960866\
70172427121883998797908792274921901699720888093776\
65727333001053367881220235421809751254540594752243\
52584907711670556013604839586446706324415722155397\
53697817977846174064955149290862569321978468622482\
83972241375657056057490261407972968652414535100474\
82166370484403199890008895243450658541227588666881\
16427171479924442928230863465674813919123162824586\
17866458359124566529476545682848912883142607690042\
24219022671055626321111109370544217506941658960408\
07198403850962455444362981230987879927244284909188\
84580156166097919133875499200524063689912560717606\
05886116467109405077541002256983155200055935729725\
71636269561882670428252483600823257530420752963450'

#Import Modules
import operator
from operator import mul

#Put all of the
def greatest_product():
global list
list = []
for i in n:
list.append(int(i))
return list

greatest_product()

def lists():
global seq_13
seq_13 = []

count = 0
for i in list:
x = list[count:count+13]
if len(x) == 13:
seq_13.append(x)
count += 1
return seq_13
print lists(

Solution

Rename your variables and functions to be more specific and do not keep unneeded array data, like so:

def createDigits():
    global digits
    digits = []
    for i in n:
        digits.append(int(i))
    return digits

def calculateProduct(startPosition):
   global digits
   global windowSize
   factors = digits[startPosition: startPosition+windowSize]
   product = 1
   for digit in digits:
       product = product * digit
   return product

createDigits()
maxProduct = 1
windowSize = 13
for i in xrange(0, len(digits - windowSize))
   product = calculateProduct(i)
   if product > maxProduct:
      maxProduct = product


EDIT: Also, might as well not scan products at the end when the window starts to shrink, since they are guaranteed to be less than the last complete window.

Code Snippets

def createDigits():
    global digits
    digits = []
    for i in n:
        digits.append(int(i))
    return digits

def calculateProduct(startPosition):
   global digits
   global windowSize
   factors = digits[startPosition: startPosition+windowSize]
   product = 1
   for digit in digits:
       product = product * digit
   return product

createDigits()
maxProduct = 1
windowSize = 13
for i in xrange(0, len(digits - windowSize))
   product = calculateProduct(i)
   if product > maxProduct:
      maxProduct = product

Context

StackExchange Code Review Q#62367, answer score: 3

Revisions (0)

No revisions yet.