Euler #8: Largest Product in a Series

The four adjacent digits in the 1000-digit number that have the greatest product are 9\times9\times8\times9=5932.

7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450

Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?

https://projecteuler.net/problem=8

Gee whiz! That’s one large number. The problem is asking for the largest product of 13 consecutive digits. Essentially, we slide a window that’s 13 digits wide across this behemoth. For each “view”, we calculate the product and check against the largest product so far. If the new view’s product is larger, we then replace the old largest product with the new product.

huge_number = 7316717653133062491922... # The rest is redacted to save space
huge_string = str(huge_number) # Makes window-sliding a lot easier if we can index digits directly
window_width = 13
stop_index = len(huge_string) - window_width
product = 1
for i in range(0, stop_index):
    window = huge_string[i:i+window_width]
    if '0' in window:
        continue
    else:
        new_product = 1
        for digit in window:
            new_product *= int(digit)
        if new_product > product:
            product = new_product
print(product)

Letting this script loose on the humongous number gives the answer: 23514624000.