numbers = [] f = open('011.txt', 'r') for line in f: line.rstrip('\n') line_str = line.split(' ') line_int = [ int(x) for x in line_str ] numbers.append(line_int) f.close() def find_down(): max = 0 for i in range(0, 17): for j in range(0, 20): product = numbers[i][j] * numbers[i+1][j] * numbers[i+2][j] * numbers[i+3][j] if product > max: max = product return max def find_right(): max = 0 for i in range(0, 20): for j in range(0, 17): product = numbers[i][j] * numbers[i][j+1] * numbers[i][j+2] * numbers[i][j+3] if product > max: max = product return max def find_diagonal1(): max = 0 for i in range(0, 17): for j in range(0, 17): product = numbers[i][j] * numbers[i+1][j+1] * numbers[i+2][j+2] * numbers[i+3][j+3] if product > max: max = product return max def find_diagonal2(): max = 0 for i in range(0, 17): for j in range(0, 17): product = numbers[i][19-j] * numbers[i+1][18-j] * numbers[i+2][17-j] * numbers[i+3][16-j] if product > max: max = product return max print max(find_down(), find_right(), find_diagonal1(), find_diagonal2())