fork download
  1. def get_pairs(n, pool=None):
  2. if pool is None:
  3. pool = set(range(1, n + 1))
  4. if not pool:
  5. yield []
  6. for i in pool:
  7. for i2 in pool.intersection(range(i * 2, n + 1)):
  8. for pairs in get_pairs(n, pool - {i, i2}):
  9. yield [(i, i2)] + pairs
  10.  
  11. print(*get_pairs(6), sep='\n')
Success #stdin #stdout 0.04s 9736KB
stdin
Standard input is empty
stdout
[(1, 4), (2, 5), (3, 6)]
[(1, 4), (3, 6), (2, 5)]
[(1, 5), (2, 4), (3, 6)]
[(1, 5), (3, 6), (2, 4)]
[(2, 4), (1, 5), (3, 6)]
[(2, 4), (3, 6), (1, 5)]
[(2, 5), (1, 4), (3, 6)]
[(2, 5), (3, 6), (1, 4)]
[(3, 6), (1, 4), (2, 5)]
[(3, 6), (1, 5), (2, 4)]
[(3, 6), (2, 4), (1, 5)]
[(3, 6), (2, 5), (1, 4)]