fork download
  1. from collections import Counter
  2. from itertools import groupby, product
  3. from pprint import pprint
  4.  
  5. faces = 'ABCDEF' ; assert len(faces) == 6
  6. ndice = 3
  7.  
  8. rolls = list(product(faces, repeat=ndice))
  9. pprint(rolls)
  10.  
  11. groups = groupby(sorted(rolls, key=Counter), key=Counter)
  12. data = {tuple(sorted(uniqrol.elements())):list(rols) for uniqrol,rols in groups}
  13. pprint(data)
  14.  
  15. pprint({uniqrol:len(rols) for uniqrol,rols in data.items()})
  16.  
Success #stdin #stdout 0.13s 8888KB
stdin
Standard input is empty
stdout
[('A', 'A', 'A'),
 ('A', 'A', 'B'),
 ('A', 'A', 'C'),
 ('A', 'A', 'D'),
 ('A', 'A', 'E'),
 ('A', 'A', 'F'),
 ('A', 'B', 'A'),
 ('A', 'B', 'B'),
 ('A', 'B', 'C'),
 ('A', 'B', 'D'),
 ('A', 'B', 'E'),
 ('A', 'B', 'F'),
 ('A', 'C', 'A'),
 ('A', 'C', 'B'),
 ('A', 'C', 'C'),
 ('A', 'C', 'D'),
 ('A', 'C', 'E'),
 ('A', 'C', 'F'),
 ('A', 'D', 'A'),
 ('A', 'D', 'B'),
 ('A', 'D', 'C'),
 ('A', 'D', 'D'),
 ('A', 'D', 'E'),
 ('A', 'D', 'F'),
 ('A', 'E', 'A'),
 ('A', 'E', 'B'),
 ('A', 'E', 'C'),
 ('A', 'E', 'D'),
 ('A', 'E', 'E'),
 ('A', 'E', 'F'),
 ('A', 'F', 'A'),
 ('A', 'F', 'B'),
 ('A', 'F', 'C'),
 ('A', 'F', 'D'),
 ('A', 'F', 'E'),
 ('A', 'F', 'F'),
 ('B', 'A', 'A'),
 ('B', 'A', 'B'),
 ('B', 'A', 'C'),
 ('B', 'A', 'D'),
 ('B', 'A', 'E'),
 ('B', 'A', 'F'),
 ('B', 'B', 'A'),
 ('B', 'B', 'B'),
 ('B', 'B', 'C'),
 ('B', 'B', 'D'),
 ('B', 'B', 'E'),
 ('B', 'B', 'F'),
 ('B', 'C', 'A'),
 ('B', 'C', 'B'),
 ('B', 'C', 'C'),
 ('B', 'C', 'D'),
 ('B', 'C', 'E'),
 ('B', 'C', 'F'),
 ('B', 'D', 'A'),
 ('B', 'D', 'B'),
 ('B', 'D', 'C'),
 ('B', 'D', 'D'),
 ('B', 'D', 'E'),
 ('B', 'D', 'F'),
 ('B', 'E', 'A'),
 ('B', 'E', 'B'),
 ('B', 'E', 'C'),
 ('B', 'E', 'D'),
 ('B', 'E', 'E'),
 ('B', 'E', 'F'),
 ('B', 'F', 'A'),
 ('B', 'F', 'B'),
 ('B', 'F', 'C'),
 ('B', 'F', 'D'),
 ('B', 'F', 'E'),
 ('B', 'F', 'F'),
 ('C', 'A', 'A'),
 ('C', 'A', 'B'),
 ('C', 'A', 'C'),
 ('C', 'A', 'D'),
 ('C', 'A', 'E'),
 ('C', 'A', 'F'),
 ('C', 'B', 'A'),
 ('C', 'B', 'B'),
 ('C', 'B', 'C'),
 ('C', 'B', 'D'),
 ('C', 'B', 'E'),
 ('C', 'B', 'F'),
 ('C', 'C', 'A'),
 ('C', 'C', 'B'),
 ('C', 'C', 'C'),
 ('C', 'C', 'D'),
 ('C', 'C', 'E'),
 ('C', 'C', 'F'),
 ('C', 'D', 'A'),
 ('C', 'D', 'B'),
 ('C', 'D', 'C'),
 ('C', 'D', 'D'),
 ('C', 'D', 'E'),
 ('C', 'D', 'F'),
 ('C', 'E', 'A'),
 ('C', 'E', 'B'),
 ('C', 'E', 'C'),
 ('C', 'E', 'D'),
 ('C', 'E', 'E'),
 ('C', 'E', 'F'),
 ('C', 'F', 'A'),
 ('C', 'F', 'B'),
 ('C', 'F', 'C'),
 ('C', 'F', 'D'),
 ('C', 'F', 'E'),
 ('C', 'F', 'F'),
 ('D', 'A', 'A'),
 ('D', 'A', 'B'),
 ('D', 'A', 'C'),
 ('D', 'A', 'D'),
 ('D', 'A', 'E'),
 ('D', 'A', 'F'),
 ('D', 'B', 'A'),
 ('D', 'B', 'B'),
 ('D', 'B', 'C'),
 ('D', 'B', 'D'),
 ('D', 'B', 'E'),
 ('D', 'B', 'F'),
 ('D', 'C', 'A'),
 ('D', 'C', 'B'),
 ('D', 'C', 'C'),
 ('D', 'C', 'D'),
 ('D', 'C', 'E'),
 ('D', 'C', 'F'),
 ('D', 'D', 'A'),
 ('D', 'D', 'B'),
 ('D', 'D', 'C'),
 ('D', 'D', 'D'),
 ('D', 'D', 'E'),
 ('D', 'D', 'F'),
 ('D', 'E', 'A'),
 ('D', 'E', 'B'),
 ('D', 'E', 'C'),
 ('D', 'E', 'D'),
 ('D', 'E', 'E'),
 ('D', 'E', 'F'),
 ('D', 'F', 'A'),
 ('D', 'F', 'B'),
 ('D', 'F', 'C'),
 ('D', 'F', 'D'),
 ('D', 'F', 'E'),
 ('D', 'F', 'F'),
 ('E', 'A', 'A'),
 ('E', 'A', 'B'),
 ('E', 'A', 'C'),
 ('E', 'A', 'D'),
 ('E', 'A', 'E'),
 ('E', 'A', 'F'),
 ('E', 'B', 'A'),
 ('E', 'B', 'B'),
 ('E', 'B', 'C'),
 ('E', 'B', 'D'),
 ('E', 'B', 'E'),
 ('E', 'B', 'F'),
 ('E', 'C', 'A'),
 ('E', 'C', 'B'),
 ('E', 'C', 'C'),
 ('E', 'C', 'D'),
 ('E', 'C', 'E'),
 ('E', 'C', 'F'),
 ('E', 'D', 'A'),
 ('E', 'D', 'B'),
 ('E', 'D', 'C'),
 ('E', 'D', 'D'),
 ('E', 'D', 'E'),
 ('E', 'D', 'F'),
 ('E', 'E', 'A'),
 ('E', 'E', 'B'),
 ('E', 'E', 'C'),
 ('E', 'E', 'D'),
 ('E', 'E', 'E'),
 ('E', 'E', 'F'),
 ('E', 'F', 'A'),
 ('E', 'F', 'B'),
 ('E', 'F', 'C'),
 ('E', 'F', 'D'),
 ('E', 'F', 'E'),
 ('E', 'F', 'F'),
 ('F', 'A', 'A'),
 ('F', 'A', 'B'),
 ('F', 'A', 'C'),
 ('F', 'A', 'D'),
 ('F', 'A', 'E'),
 ('F', 'A', 'F'),
 ('F', 'B', 'A'),
 ('F', 'B', 'B'),
 ('F', 'B', 'C'),
 ('F', 'B', 'D'),
 ('F', 'B', 'E'),
 ('F', 'B', 'F'),
 ('F', 'C', 'A'),
 ('F', 'C', 'B'),
 ('F', 'C', 'C'),
 ('F', 'C', 'D'),
 ('F', 'C', 'E'),
 ('F', 'C', 'F'),
 ('F', 'D', 'A'),
 ('F', 'D', 'B'),
 ('F', 'D', 'C'),
 ('F', 'D', 'D'),
 ('F', 'D', 'E'),
 ('F', 'D', 'F'),
 ('F', 'E', 'A'),
 ('F', 'E', 'B'),
 ('F', 'E', 'C'),
 ('F', 'E', 'D'),
 ('F', 'E', 'E'),
 ('F', 'E', 'F'),
 ('F', 'F', 'A'),
 ('F', 'F', 'B'),
 ('F', 'F', 'C'),
 ('F', 'F', 'D'),
 ('F', 'F', 'E'),
 ('F', 'F', 'F')]
{('A', 'A', 'A'): [('A', 'A', 'A')],
 ('A', 'A', 'B'): [('A', 'A', 'B'), ('A', 'B', 'A'), ('B', 'A', 'A')],
 ('A', 'A', 'C'): [('A', 'A', 'C'), ('A', 'C', 'A'), ('C', 'A', 'A')],
 ('A', 'A', 'D'): [('A', 'A', 'D'), ('A', 'D', 'A'), ('D', 'A', 'A')],
 ('A', 'A', 'E'): [('A', 'A', 'E'), ('A', 'E', 'A'), ('E', 'A', 'A')],
 ('A', 'A', 'F'): [('A', 'A', 'F'), ('A', 'F', 'A'), ('F', 'A', 'A')],
 ('A', 'B', 'B'): [('A', 'B', 'B'), ('B', 'A', 'B'), ('B', 'B', 'A')],
 ('A', 'B', 'C'): [('A', 'B', 'C'),
                   ('A', 'C', 'B'),
                   ('B', 'A', 'C'),
                   ('B', 'C', 'A'),
                   ('C', 'A', 'B'),
                   ('C', 'B', 'A')],
 ('A', 'B', 'D'): [('A', 'B', 'D'),
                   ('A', 'D', 'B'),
                   ('B', 'A', 'D'),
                   ('B', 'D', 'A'),
                   ('D', 'A', 'B'),
                   ('D', 'B', 'A')],
 ('A', 'B', 'E'): [('A', 'B', 'E'),
                   ('A', 'E', 'B'),
                   ('B', 'A', 'E'),
                   ('B', 'E', 'A'),
                   ('E', 'A', 'B'),
                   ('E', 'B', 'A')],
 ('A', 'B', 'F'): [('A', 'B', 'F'),
                   ('A', 'F', 'B'),
                   ('B', 'A', 'F'),
                   ('B', 'F', 'A'),
                   ('F', 'A', 'B'),
                   ('F', 'B', 'A')],
 ('A', 'C', 'C'): [('A', 'C', 'C'), ('C', 'A', 'C'), ('C', 'C', 'A')],
 ('A', 'C', 'D'): [('A', 'C', 'D'),
                   ('A', 'D', 'C'),
                   ('C', 'A', 'D'),
                   ('C', 'D', 'A'),
                   ('D', 'A', 'C'),
                   ('D', 'C', 'A')],
 ('A', 'C', 'E'): [('A', 'C', 'E'),
                   ('A', 'E', 'C'),
                   ('C', 'A', 'E'),
                   ('C', 'E', 'A'),
                   ('E', 'A', 'C'),
                   ('E', 'C', 'A')],
 ('A', 'C', 'F'): [('A', 'C', 'F'),
                   ('A', 'F', 'C'),
                   ('C', 'A', 'F'),
                   ('C', 'F', 'A'),
                   ('F', 'A', 'C'),
                   ('F', 'C', 'A')],
 ('A', 'D', 'D'): [('A', 'D', 'D'), ('D', 'A', 'D'), ('D', 'D', 'A')],
 ('A', 'D', 'E'): [('A', 'D', 'E'),
                   ('A', 'E', 'D'),
                   ('D', 'A', 'E'),
                   ('D', 'E', 'A'),
                   ('E', 'A', 'D'),
                   ('E', 'D', 'A')],
 ('A', 'D', 'F'): [('A', 'D', 'F'),
                   ('A', 'F', 'D'),
                   ('D', 'A', 'F'),
                   ('D', 'F', 'A'),
                   ('F', 'A', 'D'),
                   ('F', 'D', 'A')],
 ('A', 'E', 'E'): [('A', 'E', 'E'), ('E', 'A', 'E'), ('E', 'E', 'A')],
 ('A', 'E', 'F'): [('A', 'E', 'F'),
                   ('A', 'F', 'E'),
                   ('E', 'A', 'F'),
                   ('E', 'F', 'A'),
                   ('F', 'A', 'E'),
                   ('F', 'E', 'A')],
 ('A', 'F', 'F'): [('A', 'F', 'F'), ('F', 'A', 'F'), ('F', 'F', 'A')],
 ('B', 'B', 'B'): [('B', 'B', 'B')],
 ('B', 'B', 'C'): [('B', 'B', 'C'), ('B', 'C', 'B'), ('C', 'B', 'B')],
 ('B', 'B', 'D'): [('B', 'B', 'D'), ('B', 'D', 'B'), ('D', 'B', 'B')],
 ('B', 'B', 'E'): [('B', 'B', 'E'), ('B', 'E', 'B'), ('E', 'B', 'B')],
 ('B', 'B', 'F'): [('B', 'B', 'F'), ('B', 'F', 'B'), ('F', 'B', 'B')],
 ('B', 'C', 'C'): [('B', 'C', 'C'), ('C', 'B', 'C'), ('C', 'C', 'B')],
 ('B', 'C', 'D'): [('B', 'C', 'D'),
                   ('B', 'D', 'C'),
                   ('C', 'B', 'D'),
                   ('C', 'D', 'B'),
                   ('D', 'B', 'C'),
                   ('D', 'C', 'B')],
 ('B', 'C', 'E'): [('B', 'C', 'E'),
                   ('B', 'E', 'C'),
                   ('C', 'B', 'E'),
                   ('C', 'E', 'B'),
                   ('E', 'B', 'C'),
                   ('E', 'C', 'B')],
 ('B', 'C', 'F'): [('B', 'C', 'F'),
                   ('B', 'F', 'C'),
                   ('C', 'B', 'F'),
                   ('C', 'F', 'B'),
                   ('F', 'B', 'C'),
                   ('F', 'C', 'B')],
 ('B', 'D', 'D'): [('B', 'D', 'D'), ('D', 'B', 'D'), ('D', 'D', 'B')],
 ('B', 'D', 'E'): [('B', 'D', 'E'),
                   ('B', 'E', 'D'),
                   ('D', 'B', 'E'),
                   ('D', 'E', 'B'),
                   ('E', 'B', 'D'),
                   ('E', 'D', 'B')],
 ('B', 'D', 'F'): [('B', 'D', 'F'),
                   ('B', 'F', 'D'),
                   ('D', 'B', 'F'),
                   ('D', 'F', 'B'),
                   ('F', 'B', 'D'),
                   ('F', 'D', 'B')],
 ('B', 'E', 'E'): [('B', 'E', 'E'), ('E', 'B', 'E'), ('E', 'E', 'B')],
 ('B', 'E', 'F'): [('B', 'E', 'F'),
                   ('B', 'F', 'E'),
                   ('E', 'B', 'F'),
                   ('E', 'F', 'B'),
                   ('F', 'B', 'E'),
                   ('F', 'E', 'B')],
 ('B', 'F', 'F'): [('B', 'F', 'F'), ('F', 'B', 'F'), ('F', 'F', 'B')],
 ('C', 'C', 'C'): [('C', 'C', 'C')],
 ('C', 'C', 'D'): [('C', 'C', 'D'), ('C', 'D', 'C'), ('D', 'C', 'C')],
 ('C', 'C', 'E'): [('C', 'C', 'E'), ('C', 'E', 'C'), ('E', 'C', 'C')],
 ('C', 'C', 'F'): [('C', 'C', 'F'), ('C', 'F', 'C'), ('F', 'C', 'C')],
 ('C', 'D', 'D'): [('C', 'D', 'D'), ('D', 'C', 'D'), ('D', 'D', 'C')],
 ('C', 'D', 'E'): [('C', 'D', 'E'),
                   ('C', 'E', 'D'),
                   ('D', 'C', 'E'),
                   ('D', 'E', 'C'),
                   ('E', 'C', 'D'),
                   ('E', 'D', 'C')],
 ('C', 'D', 'F'): [('C', 'D', 'F'),
                   ('C', 'F', 'D'),
                   ('D', 'C', 'F'),
                   ('D', 'F', 'C'),
                   ('F', 'C', 'D'),
                   ('F', 'D', 'C')],
 ('C', 'E', 'E'): [('C', 'E', 'E'), ('E', 'C', 'E'), ('E', 'E', 'C')],
 ('C', 'E', 'F'): [('C', 'E', 'F'),
                   ('C', 'F', 'E'),
                   ('E', 'C', 'F'),
                   ('E', 'F', 'C'),
                   ('F', 'C', 'E'),
                   ('F', 'E', 'C')],
 ('C', 'F', 'F'): [('C', 'F', 'F'), ('F', 'C', 'F'), ('F', 'F', 'C')],
 ('D', 'D', 'D'): [('D', 'D', 'D')],
 ('D', 'D', 'E'): [('D', 'D', 'E'), ('D', 'E', 'D'), ('E', 'D', 'D')],
 ('D', 'D', 'F'): [('D', 'D', 'F'), ('D', 'F', 'D'), ('F', 'D', 'D')],
 ('D', 'E', 'E'): [('D', 'E', 'E'), ('E', 'D', 'E'), ('E', 'E', 'D')],
 ('D', 'E', 'F'): [('D', 'E', 'F'),
                   ('D', 'F', 'E'),
                   ('E', 'D', 'F'),
                   ('E', 'F', 'D'),
                   ('F', 'D', 'E'),
                   ('F', 'E', 'D')],
 ('D', 'F', 'F'): [('D', 'F', 'F'), ('F', 'D', 'F'), ('F', 'F', 'D')],
 ('E', 'E', 'E'): [('E', 'E', 'E')],
 ('E', 'E', 'F'): [('E', 'E', 'F'), ('E', 'F', 'E'), ('F', 'E', 'E')],
 ('E', 'F', 'F'): [('E', 'F', 'F'), ('F', 'E', 'F'), ('F', 'F', 'E')],
 ('F', 'F', 'F'): [('F', 'F', 'F')]}
{('A', 'A', 'A'): 1,
 ('A', 'A', 'B'): 3,
 ('A', 'A', 'C'): 3,
 ('A', 'A', 'D'): 3,
 ('A', 'A', 'E'): 3,
 ('A', 'A', 'F'): 3,
 ('A', 'B', 'B'): 3,
 ('A', 'B', 'C'): 6,
 ('A', 'B', 'D'): 6,
 ('A', 'B', 'E'): 6,
 ('A', 'B', 'F'): 6,
 ('A', 'C', 'C'): 3,
 ('A', 'C', 'D'): 6,
 ('A', 'C', 'E'): 6,
 ('A', 'C', 'F'): 6,
 ('A', 'D', 'D'): 3,
 ('A', 'D', 'E'): 6,
 ('A', 'D', 'F'): 6,
 ('A', 'E', 'E'): 3,
 ('A', 'E', 'F'): 6,
 ('A', 'F', 'F'): 3,
 ('B', 'B', 'B'): 1,
 ('B', 'B', 'C'): 3,
 ('B', 'B', 'D'): 3,
 ('B', 'B', 'E'): 3,
 ('B', 'B', 'F'): 3,
 ('B', 'C', 'C'): 3,
 ('B', 'C', 'D'): 6,
 ('B', 'C', 'E'): 6,
 ('B', 'C', 'F'): 6,
 ('B', 'D', 'D'): 3,
 ('B', 'D', 'E'): 6,
 ('B', 'D', 'F'): 6,
 ('B', 'E', 'E'): 3,
 ('B', 'E', 'F'): 6,
 ('B', 'F', 'F'): 3,
 ('C', 'C', 'C'): 1,
 ('C', 'C', 'D'): 3,
 ('C', 'C', 'E'): 3,
 ('C', 'C', 'F'): 3,
 ('C', 'D', 'D'): 3,
 ('C', 'D', 'E'): 6,
 ('C', 'D', 'F'): 6,
 ('C', 'E', 'E'): 3,
 ('C', 'E', 'F'): 6,
 ('C', 'F', 'F'): 3,
 ('D', 'D', 'D'): 1,
 ('D', 'D', 'E'): 3,
 ('D', 'D', 'F'): 3,
 ('D', 'E', 'E'): 3,
 ('D', 'E', 'F'): 6,
 ('D', 'F', 'F'): 3,
 ('E', 'E', 'E'): 1,
 ('E', 'E', 'F'): 3,
 ('E', 'F', 'F'): 3,
 ('F', 'F', 'F'): 1}