Advertisement
makispaiktis

Project Euler 8 - Largest product in a series

May 22nd, 2020 (edited)
1,569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.02 KB | None | 0 0
  1. '''
  2. The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × 8 × 9 = 5832.
  3. 73167176531330624919225119674426574742355349194934
  4. 96983520312774506326239578318016984801869478851843
  5. 85861560789112949495459501737958331952853208805511
  6. 12540698747158523863050715693290963295227443043557
  7. 66896648950445244523161731856403098711121722383113
  8. 62229893423380308135336276614282806444486645238749
  9. 30358907296290491560440772390713810515859307960866
  10. 70172427121883998797908792274921901699720888093776
  11. 65727333001053367881220235421809751254540594752243
  12. 52584907711670556013604839586446706324415722155397
  13. 53697817977846174064955149290862569321978468622482
  14. 83972241375657056057490261407972968652414535100474
  15. 82166370484403199890008895243450658541227588666881
  16. 16427171479924442928230863465674813919123162824586
  17. 17866458359124566529476545682848912883142607690042
  18. 24219022671055626321111109370544217506941658960408
  19. 07198403850962455444362981230987879927244284909188
  20. 84580156166097919133875499200524063689912560717606
  21. 05886116467109405077541002256983155200055935729725
  22. 71636269561882670428252483600823257530420752963450
  23. Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?
  24. '''
  25.  
  26. # MAIN FUNCTION
  27. adjacent = 13
  28. word = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"
  29. maxProduct = 1
  30.  
  31. for i in range(len(word)-adjacent+1):
  32.     digits = []
  33.     for j in range(adjacent):
  34.         digits.append(word[i+j])
  35.     # Now, the vector contains some adjacent values from index = i until index = i + adjacent
  36.     # But I have to make these chars into numbers
  37.     product = 1
  38.     for k in range(len(digits)):
  39.         try:
  40.             product *= int(digits[k])
  41.         except ValueError:
  42.             print("Error in typecasting " + digits[k] + " into an integer number.")
  43.         # If no error occurs, I have to run this code
  44.         if product > maxProduct:
  45.             maxProduct = product
  46.  
  47. print("In this " + str(len(word)) + "-digit number, the largest product of " + str(adjacent) + " adjacent digits is: " + str(maxProduct))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement