0
0에서 N까지 순열을 만들 수 있습니다. 하지만 어떻게 행렬과 순열을 각각의 행 matrix(2,L)
에서 만들 수 있습니다.행렬을 만들고 각 행을 순열 변환
add(X,L,[X|L]).
add(X,[L|H],[L|R]):- add(X,H,R).
permut([],[]).
permut([L|H],R):- permut(H,R1),add(L,R1,R).
permutations(L,R):- findall(P,permut(L,P),R).
do_list(N, L) :- do_list1(N, [], L).
do_list1(0, L, L) :- !.
do_list1(N, R, L) :- N > 0,
N1 is N-1,
do_list1(N1, [N|R], L).
matrix(N,L):-
do_list(N,R),
permut(R,L).
N × N을 만들고 싶습니까? 행렬 여기서 각 행은 길이가 N 인 동일한 목록의 다른 순열 (permutation)입니까? – lurker
네, N x N 행렬과 순열을 각 라인마다 라틴 스퀘어가 될 때까지 만들고 싶습니다. – user2947488