Guest User

Untitled

a guest
Jul 18th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. '''
  2. Find the greatest product of five consecutive digits in the 1000-digit number.
  3. '''
  4.  
  5. import operator
  6.  
  7. # Only return the max product from this substring
  8. def getMax(n):
  9. products = []
  10.  
  11. for i in xrange(0, len(n) - 4):
  12. # Convert the 5 char string to a list of characters
  13. chars = list(n[i:i+5])
  14.  
  15. # Convert that list to integers
  16. digits = [int(c) for c in chars]
  17.  
  18. # Reduce the list to a product of the digits
  19. products.append(reduce(operator.mul, digits))
  20.  
  21. return max(products)
  22.  
  23. if __name__ == '__main__':
  24. num = "73167176531330624919225119674426574742355349194934"\
  25. "96983520312774506326239578318016984801869478851843"\
  26. "85861560789112949495459501737958331952853208805511"\
  27. "12540698747158523863050715693290963295227443043557"\
  28. "66896648950445244523161731856403098711121722383113"\
  29. "62229893423380308135336276614282806444486645238749"\
  30. "30358907296290491560440772390713810515859307960866"\
  31. "70172427121883998797908792274921901699720888093776"\
  32. "65727333001053367881220235421809751254540594752243"\
  33. "52584907711670556013604839586446706324415722155397"\
  34. "53697817977846174064955149290862569321978468622482"\
  35. "83972241375657056057490261407972968652414535100474"\
  36. "82166370484403199890008895243450658541227588666881"\
  37. "16427171479924442928230863465674813919123162824586"\
  38. "17866458359124566529476545682848912883142607690042"\
  39. "24219022671055626321111109370544217506941658960408"\
  40. "07198403850962455444362981230987879927244284909188"\
  41. "84580156166097919133875499200524063689912560717606"\
  42. "05886116467109405077541002256983155200055935729725"\
  43. "71636269561882670428252483600823257530420752963450"
  44.  
  45. # We want to ignore calculating the product for any quintuplet with 0s
  46. # To do this, we re-build the list of quintuplets by treating each string
  47. # before and after a 0 as a separate string
  48. nums = num.split("0")
  49.  
  50. # Filter out any substrings that are shorter than 5
  51. # These would have resulted in a product of 0 so they are safe to ignore
  52. nums = [n for n in nums if len(n) >= 5]
  53.  
  54. print max(getMax(n) for n in nums)
  55.  
  56. # Sanity check by running on original string
  57. # print getMax(num)
Add Comment
Please, Sign In to add comment