python3 <<"PY" from functools import cache V=[[10,5,4],[10,8,6],[10,8],[10,3]] @cache def h(rs,am,bm): rem=0 for t in range(4): rem=rem+len(V[t])-rs[t] if rem==0: return sum(am)-sum(bm) k=10-rem alice=k==(k//2)*2 vals=[] for t in range(4): if rs[t]na[t]: na[t]=v vals.append(h(nr,tuple(na),bm)) else: nb=list(bm) if v>nb[t]: nb[t]=v vals.append(h(nr,am,tuple(nb))) if alice: return max(vals) return min(vals) def pv(rs,am,bm,path): rem=0 for t in range(4): rem=rem+len(V[t])-rs[t] if rem==0: print(path,am,bm,sum(am)-sum(bm)) return k=10-rem alice=k==(k//2)*2 opts=[] for t in range(4): if rs[t]na[t]: na[t]=v opts.append((h(nr,tuple(na),bm),t,tuple(na),bm)) else: nb=list(bm) if v>nb[t]: nb[t]=v opts.append((h(nr,am,tuple(nb)),t,am,tuple(nb))) if alice: z=max(opts) else: z=min(opts) print(path,"move task",z[1],"immediate",V[z[1]][rs[z[1]]],"value",z[0]) nr=list(rs) nr[z[1]]=nr[z[1]]+1 pv(tuple(nr),z[2],z[3],path+1) pv((0,0,0,0),(0,0,0,0),(0,0,0,0),0) PY