fork download
  1. import itertools
  2. E=enumerate
  3. L=len
  4. def f(m):
  5. u,d,D={'y':[],'g':[],'o':[]},{},{}
  6. for l in m:t=[a for a,b in l if b in'yg'];D={**D,**{i:max(t.count(i),D.get(i,0))for i in t}}
  7. for i,l in E(zip(*m)):
  8. for C,c in l:u[c]+=C,;d[i]=d[i]if list!=type(d.get(i,[]))else[C,d.get(i,[])+[C]][c in'yo']
  9. q,o=[[]],[]
  10. for w in q:
  11. if L(w)-5:q+=[w+[C]]if'['!=str(C:=d[L(w)])[0]else[w+[[]]]+[w+[i]for i in{*u['y']}if~-(i in C)]
  12. else:o+=[w]*all(D[j]==w.count(j)for j in D)
  13. return L({j for i in o for j in itertools.product(*[[k]if k else{*'abcdefghijklmnopqrstuvwxyz'}-{*u['o'],*d[I]}for I,k in E(i)])})if~-L(o)else eval('*'.join(str([1,26-L([*filter(None,{*u['o'],*d[I]})])][k==[]])for I,k in E(o[0])))
  14.  
  15. m=[[('o','o'),('h','o'), ('i', 'y'), ('u', 'y'), ('e', 'o')],
  16. [('p', 'o'), ('t', 'o'), ('y', 'g'), ('y', 'g'), ('u', 'y')]]
  17.  
  18. m1 = [[('e','y'), ('e', 'y'), ('b', 'y'), ('o', 'y'), ('o', 'y')]]
  19.  
  20. [['b', 'o', 'o', 'e', 'e'], ['o', 'b', 'o', 'e', 'e'], ['o', 'o', 'e', 'b', 'e'], ['o', 'o', 'e', 'e', 'b']]
  21.  
  22. m2 = [[('t', 'o'), ('h', 'o'), ('e', 'g'), ('e', 'g'), ('f', 'o')],
  23. [('g', 'y'), ('r', 'g'), ('e', 'g'), ('e', 'g'), ('m', 'y')]]
  24.  
  25. m3 = [[('p', 'y'), ('r', 'y'), ('o', 'y'), ('q', 'y'), ('u', 'y')]]
  26.  
  27. m4 = [[('e', 'y'), ('e', 'o'), ('b', 'y'), ('o', 'g'), ('o', 'y')],
  28. [('b', 'y'), ('o', 'o'), ('o', 'y'), ('o', 'g'), ('e', 'y')]]
  29.  
  30. m5 = [[('b', 'o'), ('o', 'o'), ('x', 'y'), ('c', 'g'), ('o', 'y')],
  31. [('s', 'y'), ('o', 'y'), ('d', 'o'), ('a', 'y'), ('r', 'o')],
  32. [('x', 'y'), ('a', 'y'), ('o', 'g'), ('c', 'g'), ('s', 'y')]]
  33.  
  34. m6 = [[('f', 'o'), ('f', 'o'), ('f', 'o'), ('f', 'o'), ('f', 'o')]]
  35. m7 = [[('p', 'o'), ('r', 'o'), ('o', 'o'), ('q', 'o'), ('u', 'o')]]
  36.  
  37.  
  38. print(f([[('', 'o'), ('', 'o'), ('', 'o'), ('', 'o'), ('', 'o')]]))
  39. print(f(m2))
  40. print(f(m))
  41. print(f(m6))
  42. print(f(m7))
  43. print(f(m3))
  44. print(f(m1))
  45. print(f(m4))
  46. print(f(m5))
Success #stdin #stdout 0.09s 14084KB
stdin
Standard input is empty
stdout
11881376
1
79
9765625
4084101
44
4
47
1