Heh, here's a Prolog version: ==========================================================
gen( _, 0, [] ) :- !. gen( S, N, [H | T] ) :- member( H, S ), M is N - 1, gen( S, M, T ). ========================================================== Yep, that's it :))) Here's how to test it: ========================================================== 1 ?- gen([a, b, c], 3, X), print(X), nl, fail. [a, a, a] [a, a, b] [a, a, c] [a, b, a] [a, b, b] [a, b, c] [a, c, a] [a, c, b] [a, c, c] [b, a, a] [b, a, b] [b, a, c] [b, b, a] [b, b, b] [b, b, c] [b, c, a] [b, c, b] [b, c, c] [c, a, a] [c, a, b] [c, a, c] [c, b, a] [c, b, b] [c, b, c] [c, c, a] [c, c, b] [c, c, c] No 2 ?- gen([a, b, c], 3, X), not(member(X, [[a, _, _], [_, b, _], [_, _, c]])), print(X), nl, fail. [b, a, a] [b, a, b] [b, c, a] [b, c, b] [c, a, a] [c, a, b] [c, c, a] [c, c, b] No ========================================================== -- http://mail.python.org/mailman/listinfo/python-list