2011-02-11 2 views
6

프롤로그에서 행렬의 내 대답에 나타납니다, 다음입니다 그것은 잘 갔다,하지만 난 행렬의 크기를 증가 할 때, 행렬의 끝에있는 "점"차원이 상승 하나이 등, 좌표 증가 나타나기 시작 :왜 "..."나는 (체스 판과 같은) 좌표의 매트릭스를 생성하기위한 약간의 코드를 만들어

?- 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|...], [...|...]|...]] . 

누구나 어떤 단서가 왜 이런 일이 일어 났습니까?

감사합니다. 기본적으로

+0

아래 거짓으로 대답은 당신에게 "최상위"프롤로그 쿼리하여 기본 디스플레이의 줄임표 (...)의 철저한 설명을 제공하는 언 바운드 변수를 포함합니다. 귀하의 질문은 목록의 목록은 "체스 판처럼"2D 배열을 나타내는 것이라고 제안합니다. 이 경우, 사용자 정의 표시 술어를 작성하는 것이 유용하다는 것을 알게됩니다. ** write/1 **를 사용하여 Prolog 용어를 표시하면 줄임표 (...)가 나타나지 않을 것이며, 개괄을 사용하여 목록을 분리하면보다 많은 체스 판과 같은 모양을 얻을 수 있습니다. – hardmath

답변

7

는 SWI의 최상위 루프 (10) 더 깊은 부분은 그 깊이를 확장 또는 0


?- length(L,10). 
L = [_G317, _G320, _G323, _G326, _G329, _G332, _G335, _G338, _G341|...]. 

?- current_prolog_flag(toplevel_print_options,V). 
V = [quoted(true), portray(true), max_depth(10), spacing(next_argument)]. 

?- set_prolog_flag(toplevel_print_options, [quoted(true), portray(true), max_depth(0), spacing(next_argument)]). 
true. 

?- length(L,10). 
L = [_G320, _G323, _G326, _G329, _G332, _G335, _G338, _G341, _G344, _G347]. 

에 깊이를 설정하여 그 한계를 제거 할 수 있습니다 ... 대체하는 깊이까지의 기간을 인쇄 — 업데이트 : SWI의 새로운 버전은 다른 플래그를 변경해야합니다

?- current_prolog_flag(T,V), atom_concat(_,options,T). 
T = answer_write_options, 
V = [quoted(true), portray(true), max_depth(10), spacing(next_argument)] . 

?- set_prolog_flag(answer_write_options, [quoted(true), portray(true), max_depth(0), spacing(next_argument)]). 
true.