こういう問題は嫌いだな。
import numpy
N=20
def l2r(ls):
cl = []
for l in ls:
for i in range(0, N-3):
if "00" in l[i:i+4]: break
else: cl.append(l[i]*l[i+1]*l[i+2]*l[i+3])
return max(cl)
def tl2br(ls):
cl = []
for l in range(0, N-3):
for c in range(0, N-3):
t = [ls[l+i, c+i] for i in range(0, 4)]
if "00" in t: break
else: cl.append(t[0]*t[1]*t[2]*t[3])
return max(cl)
def tr2bl(ls):
cl = []
for l in range(0, N-3):
for c in range(3, N):
t = [ls[l+i, c-i] for i in range(0, 4)]
if "00" in t: break
else: cl.append(t[0]*t[1]*t[2]*t[3])
return max(cl)
ls = numpy.loadtxt('input.dat', dtype='int')
candidates = [l2r(ls), l2r(ls.T), tl2br(ls), tr2bl(ls)]
print(max(candidates))
0 件のコメント:
コメントを投稿