def listOrder = { a, b -> def k = [a.size(), b.size()].min() def i = (0.. b[i] : a.size() <=> b.size() } def orderedPermutations = { list -> def n = list.size() (0.. def n = list.size() n == 1 || (0..<(n-1)).every{ i -> ((i+1).. !([list[i]+j-i, list[i]+i-j].contains(list[j])) } } } def queensDistinctSolutions = { n -> // each permutation is an N-Rooks solution orderedPermutations((0..