tôi đã thực hiện một mã nhỏ để tạo ra một ma trận của tọa độ (giống như một bàn cờ), đó là những điều sau:Tại sao "..." xuất hiện trong câu trả lời của tôi về ma trận trong Prolog
createMatrix(N,M,R) :- creaMatriu(N,M,A), reversed(R,A).
creaMatriu(N,0,[T]) :- creafila(N,0,T),!.
creaMatriu(N,M,[T|C]) :- creafila(N,M,T), M1 is M-1, creaMatriu(N,M1,C).
creafila(0,M,[[M,0]]):-!.
creafila(N,M,[[M,N]|C]) :-N1 is N-1,creafila(N1,M,C).
reversed(A, B) :- reversed(B, [], A).
reversed([A|B], C, D) :- reverse(N,A),reversed(B, [N|C], D).
reversed([], A, A).
Lần đầu tiên tôi thực hiện nó diễn ra tốt đẹp, nhưng khi tôi tăng lên kích thước của ma trận, các "chấm" ở cuối của ma trận bắt đầu xuất hiện incrementing một phối hợp như kích thước tăng lên, như thế này:
?- createMatrix(1,1,R).
R = [[[0, 0], [0, 1]], [[1, 0], [1, 1]]] .
?- createMatrix(2,1,R).
R = [[[0, 0], [0, 1], [0, 2]], [[1, 0], [1, 1], [1, 2]]] .
?- createMatrix(2,2,R).
R = [[[0, 0], [0, 1], [0, 2]], [[1, 0], [1, 1], [1, 2]], [[2, 0], [2, 1], [2, 2]]] .
?- createMatrix(3,2,R).
R = [[[0, 0], [0, 1], [0, 2], [0, 3]], [[1, 0], [1, 1], [1, 2], [1, 3]], [[2, 0], [2, 1], [2, 2], [2, 3]]] .
?- createMatrix(3,3,R).
R = [[[0, 0], [0, 1], [0, 2], [0, 3]], [[1, 0], [1, 1], [1, 2], [1, 3]], [[2, 0], [2, 1], [2, 2], [2, 3]], [[3, 0], [3, 1], [3, 2], [3|...]]] .
?- createMatrix(4,3,R).
R = [[[0, 0], [0, 1], [0, 2], [0, 3], [0, 4]], [[1, 0], [1, 1], [1, 2], [1, 3], [1, 4]], [[2, 0], [2, 1], [2, 2], [2, 3], [2|...]], [[3, 0], [3, 1], [3, 2], [3|...], [...|...]]] .
?- createMatrix(4,4,R).
R = [[[0, 0], [0, 1], [0, 2], [0, 3], [0, 4]], [[1, 0], [1, 1], [1, 2], [1, 3], [1, 4]], [[2, 0], [2, 1], [2, 2], [2, 3], [2|...]], [[3, 0], [3, 1], [3, 2], [3|...], [...|...]], [[4, 0], [4, 1], [4|...], [...|...]|...]] .
bất cứ ai có bất cứ mối tại sao điều này xảy ra?
Cảm ơn bạn!
Câu trả lời bởi sai dưới đây mang đến cho bạn một lời giải thích thấu đáo về ellipsis (...) trong một màn hình mặc định bằng cách "mục cấp đầu" Prolog truy vấn chứa các biến không liên kết. Câu hỏi của bạn cho thấy danh sách các danh sách là đại diện cho một mảng 2D "giống như một bàn cờ". Nếu đúng như vậy, bạn sẽ thấy hữu ích khi viết một vị từ hiển thị tùy chỉnh. Dấu ba chấm (...) sẽ không xuất hiện nếu bạn sử dụng ** write/1 ** để hiển thị một thuật ngữ Prolog, và một hình dáng giống như bàn cờ hơn có thể đạt được bằng cách tách các danh sách với các dòng mới. – hardmath