(Python)
来自itertools导入产品
从集合导入计数器
从functools导入lru_cache
从分数导入分数
定义get_elims(o,d):返回元组(-“”.join(['od'[int(o>d)]for o,d in zip(*[sorted(i)[-2:][::-1]for i in[o,d]])]).count(j)for j in'od')
@lru_cache()
def elim_p(o_n,d_n):返回{j:计数器中j,k的分数(k,7776)(乘积中i的[get_elims(i[:o_n],i[o_n:o_n+d_n])(范围(1,7),重复=5)]).most_common()}
@lru_cache()
定义resp(on,dn):返回{(on+i[0],dn+i[1]):i的j,elim_p中的j(min(3,on),min(2,d_n)).items()}
定义get_final_result(o_n,dn):
d、 g={(on,dn):1},[(on、dn)]
而g:
w、 p=g[0],d.pop(g[0])
对于res_p(*w).items()中的i,j:
d[i]=d.get(i,0)+j*p
g=[i代表d.keys()中的i,如果min(i)>0]
返回d
def get_win_count(o_n,d_n):返回(总和(j代表i,j在get_final_result(o-n,d\un).items(),如果i[0]>i[1])*(7776**(o_n+d_n-1))).分子
a=[get_win_count(on,t-on)对于范围(2,30)中的t对于范围(1,t)中的on]
|