きったんの頭

#! /usr/bin/env python3
"""
pe11.py
https://mind.kittttttan.info/py/pe11

pe11.txt
https://mind.kittttttan.info/c/pe11.txt
"""

def pe11(fname="pe11.txt", n=4):
    """
    What is the greatest product of four numbers
    on the same straight line in the 20 by 20 grid?
    """
    with open(fname, 'r') as f:
        grid = f.read()
    grid = grid.split('\n')
    m = 0
    size = len(grid)
    r = size - n
    for i in range(size):
        grid[i] = grid[i].split(' ')
    for x in range(size):
        for y in range(size):
            ud = lr = d0 = d1 = 1
            for i in range(n):
                lr *= int(grid[x+i][y]) if x < r else 0
                ud *= int(grid[x][y+i]) if y < r else 0
                d0 *= int(grid[x+i][y+i]) if x < r and y < r else 0
                d1 *= int(grid[x+i][y+n-i]) if x < r and y < r else 0
            if m < ud: m = ud
            if m < lr: m = lr
            if m < d0: m = d0
            if m < d1: m = d1
    print(m)

if __name__ == "__main__":
    pe11()