2011-11-22 29 views
14

estoy usando SWI-Prolog y yo estoy tratando de imprimir una lista, pero si la lista tiene más de 9 artículos - que se vea como que -SWI-Prolog - Mostrar larga lista

[1, 15, 8, 22, 5, 19, 12, 25, 3|...] 

está ahí una forma de mostrar toda la lista?

Respuesta

18

Tenga una mirada en: http://www.swi-prolog.org/FAQ/AllOutput.html

La solución más sencilla es teclear w después de recibir la respuesta, es decir:

?- n_queens_problem(10,X). 
X = [1, 3, 6, 8, 10, 5, 9, 2, 4|...] [write] 
X = [1, 3, 6, 8, 10, 5, 9, 2, 4, 7] 

Después de haber pulsado la tecla "w" "[ write] "se muestra al final y la solución completa aparece en la siguiente línea.

+3

Esto no funciona si el prólogo solo devuelve una respuesta. –

+2

Si la consulta tiene éxito de manera determinista, simplemente puede escribir: '? - solución (S); verdadero., es decir, simplemente anexar '; verdadero' para introducir un punto de elección. Luego, también tienes la oportunidad de presionar 'w'. – mat

0
?- createListSomehow(List), print(List), nl. 

lo hará perfectamente suficiente. Eso es lo que hago.

Variación:

?- use_module(library(pprint)). %load a library to do pretty-printing 
?- createListSomehow(List), print_term(List,[]), nl. 

El argumento []-print_term es una lista (vacío) de opciones. Para más información, see documentation.

2

He encontrado dos maneras.


1.

?- set_prolog_flag(answer_write_options,[max_depth(0)]). 
true. 

A continuación, hacer su comando que se está imprimiendo una lista truncada.

(set_prolog_flag documentation)


2.

?- atom_chars(goodbye_prolog, X) ; true. 

(AllOutput documentation)

Ponga ; true. al final de la llamada que se traduce en una larga lista. Luego presione la tecla w en su teclado. El resultado es:

?- sudoku([_,_,2,3,_,_,_,_,_,_,_,_,3,4,_,_], Solution); true. 
Solution = [4, 1, 2, 3, 2, 3, 4, 1, 1|...] [write] 
Solution = [4, 1, 2, 3, 2, 3, 4, 1, 1, 2, 3, 4, 3, 4, 1, 2] ; 
true. 
Cuestiones relacionadas