visit - swi prolog online
SWI-Prolog-mostrar lista larga (4)
Eche un vistazo a: http://www.swi-prolog.org/FAQ/AllOutput.html
La solución simple es escribir w después de dar 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 presionar la tecla "w" "[escribir]" se muestra al final y la solución completa aparece en la siguiente línea.
Estoy usando SWI-Prolog y estoy tratando de imprimir una lista, pero si la lista tiene más de 9 elementos, parece que -
[1, 15, 8, 22, 5, 19, 12, 25, 3|...]
¿Hay alguna manera de mostrar la lista completa?
He encontrado dos formas.
1.
?- set_prolog_flag(answer_write_options,[max_depth(0)]).
true.
Luego haga su comando que está imprimiendo una lista truncada.
( documentación de set_prolog_flag )
2.
?- atom_chars(goodbye_prolog, X) ; true.
( http://www.swi-prolog.org/FAQ/AllOutput.html )
Poner ; true.
al final de la llamada que resulta 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.
Si el prólogo solo devuelve una respuesta, puede hacerlo esperar escribiendo "; verdadero". despues del predicado Luego, si presiona "w", verá la lista completa como está escrita en el documento: http://www.swi-prolog.org/FAQ/AllOutput.html
?- createListSomehow(List), print(List), nl.
lo hará lo suficientemente bien. 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 []
para print_term
es una lista (vacía) de opciones. Para más información, ver documentación .