Skip to content

Instantly share code, notes, and snippets.

@jezinka

jezinka/8.py Secret

Last active July 5, 2018 16:59
Show Gist options
  • Select an option

  • Save jezinka/450b279358d823e559a775590806d95e to your computer and use it in GitHub Desktop.

Select an option

Save jezinka/450b279358d823e559a775590806d95e to your computer and use it in GitHub Desktop.
large_number = open("source.txt", 'r').read()
large_number_array = list(map(int, large_number))
def find_max_product(window_size):
if len(large_number_array) < window_size:
return -1
i = skip_zeros(0, window_size)
max_product = count_initial_product(i, window_size)
i += window_size
window_product = max_product
while i + window_size <= len(large_number_array):
next_item = large_number_array[i]
previous_item = large_number_array[i - window_size]
if next_item is not 0:
window_product = window_product // previous_item * next_item
i += 1
else:
i = skip_zeros(i, window_size)
if i + window_size <= len(large_number_array):
window_product = count_initial_product(i, window_size)
else:
break
i += window_size
max_product = max(window_product, max_product)
return max_product
def skip_zeros(i, window_size):
while 0 in large_number_array[i:i + window_size]:
zero_index = large_number_array[i:i + window_size].index(0)
i += zero_index + 1
return i
def count_initial_product(i, window_size):
window_product = 1
for j in range(i, i + window_size):
window_product *= large_number_array[j]
return window_product
assert find_max_product(4) == 5832
print(find_max_product(13))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment