#!/usr/local/bin/python3 from itertools import combinations L=(1,2,3,4,6,7,8,9,10,11,12,13) def vals(ps): return tuple((v if v<=9 else 10) for v in ps) def sums_of(ps): a=vals(ps) return [sum(c) for r in range(1,6) for c in combinations(a,r)] def csums(ps): d={0:1} for v in ps: vv=v if v<=9 else 10 nd=dict(d) for s in list(d): key=sum((s,vv)) nd[key]=sum((nd.get(key,0),d[s])) d=nd return d def seqpts(ps): D=set(ps) total=0 for a in range(1,14): for b in range(a,15): ln=b-a if ln>=3: if all(j in D for j in range(a,b)): if a==1 or (a-1) not in D: if b==14 or b not in D: ways=1 for j in range(a,b): ways=ways*ps.count(j) total=sum((total,ln*ways)) return total def seq2(ps): total=0 for ln in range(3,6): for idx in combinations(range(5),ln): a=sorted(ps[i] for i in idx) ok=len(set(a))==ln if ok: for j in range(1,ln): if a[j]!=sum((a[j-1],1)): ok=False if ok: left=a[0]-1 right=sum((a[-1],1)) if not any(p==left for p in ps): if not any(p==right for p in ps): total=sum((total,ln)) return total def main(): badseq=0 firstseq=None badcomb=0 firstcomb=None for H in combinations(L,4): for k in range(1,14): ps=(*H,k) s1=seqpts(ps) s2=seq2(ps) if s1!=s2: badseq=sum((badseq,1)) if firstseq is None: firstseq=(ps,s1,s2) ss=sums_of(ps) d=csums(ps) for m in range(9,22): if ss.count(m)!=d.get(m,0): badcomb=sum((badcomb,1)) if firstcomb is None: firstcomb=(ps,m,ss.count(m),d.get(m,0)) print('badseq',badseq,'firstseq',firstseq) print('badcomb',badcomb,'firstcomb',firstcomb) main()