1 def queens (row, col):
2 def safe (ran, rst):
3 def check (pos):
4 return ran != rst[pos] and abs(ran - rst[pos]) != pos + 1
5 return all([check(pos) for pos in range(len(rst))])
6 return [[]] if col == 0 else [[ran] + rst for ran in range(row) for rst in queens(row, col - 1) if safe(ran, rst)]