python3 -c "import random,time,math R=7 C=11 N=77 W=[] for r in range(R): for c in range(C): W.append([u*C+v for u in range(max(0,r-1),min(R,r+2)) for v in range(max(0,c-1),min(C,c+2))]) WI=[[] for _ in range(N)] for k,w in enumerate(W): for i in w: WI[i].append(k) def calc(a): return [sum(a[i] for i in w) for w in W] a=[75,47,49,69,76,46,63,68,50,53,77,51,20,6,35,23,2,42,19,7,21,38,11,40,10,25,16,17,22,28,5,18,39,62,52,57,64,66,58,55,65,54,56,70,37,26,3,14,32,1,12,43,4,15,36,33,30,9,29,31,13,34,27,8,24,41,60,67,44,73,71,45,59,74,48,61,72] t=308 S=calc(a) bestE=sum(max(0,x-t) for x in S) best=a[:] bestM=max(S) T=30.0 end=time.time()+6.8 it=0 while time.time()t] if not bad: bestE=0 best=a[:] break tot=sum(x for x,k in bad) r=random.random()*tot s=0 for x,k in bad: s=s+x if r