2011-02-11 22 views
6

Prolog'da matris cevabım görünür, aşağıdaki bulunuyor iyi gitti, ama matrisin boyutlarını artırılır zaman, matris sonundaki "noktalar" boyutu arttıkça kimse bu gibi, koordinat artırma görülmeye başlar:Neden "..." Ben (bir satranç tahtası gibi) bir koordinat matrisi oluşturmak için biraz kod yapılan

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

herkes herhangi bir ipucu var bu neden olur?

Teşekkür ederiz! Varsayılan olarak

+0

aşağıda yanlış tarafından cevap, ileride "üst düzey" Prolog sorgular tarafından varsayılan bir ekranda üç nokta (...) ayrıntılı bir açıklama bulunmadığını ilişkisiz değişkenler içerir. Sorunuz, liste listesinin "bir satranç tahtası gibi" bir 2D dizisini temsil etmek olduğunu göstermektedir. Eğer durum buysa, özel bir ekran yüklemi yazmak yararlı olacaktır. Bir Prolog terimi görüntülemek için ** write/1 ** kullanırsanız, elips (...) görünmez ve listeler yeni satırlarla ayrılarak daha satranç tahtası benzeri bir görünüm elde edilebilir. – hardmath

cevap

7

, SWI toplevel döngü 10. Derin parçalar O derinliğini uzatmak veya 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]. 

derinlik ayarlayarak bu sınırı kaldırabilir ... değiştirilir derinliğe kadar terimleri yazdırır — güncelleme: SWI yeni sürümlerinde, başka bayrak değiştirilmelidir:

?- 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.