2011-11-22 15 views
14

Używam SWI-Prolog i próbuję wydrukować listę, ale jeśli lista zawiera więcej niż 9 pozycji - to wyglądać -SWI-Prolog - pokaż długa lista

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

jest tam sposób na pokazanie całej listy?

Odpowiedz

18

Zapraszamy do obejrzenia: http://www.swi-prolog.org/FAQ/AllOutput.html

Prostym rozwiązaniem jest wpisanie w po odpowiedź jest podana, to znaczy:

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

Po naciśnięciu przycisku "W" klawiszem „[ write] "wyświetla się na końcu, a pełne rozwiązanie pojawia się w następnym wierszu.

+3

To nie działa, jeśli prolog zwraca tylko jedną odpowiedź. –

+2

Jeśli zapytanie powiedzie się deterministycznie, możesz po prostu napisać: '? - solution (S); true., tj. po prostu dołącz "; prawda ", aby wprowadzić punkt wyboru. Następnie masz również możliwość naciśnięcia 'w'. – mat

2

Jeśli prolog zwróci tylko jedną odpowiedź, możesz poczekać, wpisując "; true". po predykacie. Następnie, po naciśnięciu przycisku „W”, będzie można zobaczyć całą listę, jak napisano w dokumencie: http://www.swi-prolog.org/FAQ/AllOutput.html

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

zrobi to dość zgrabnie. To jest to co robię.

Variation:

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

[] argument print_term jest (pusty) lista opcji. Aby uzyskać więcej informacji, see documentation.

2

Znalazłem dwa sposoby.


1.

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

Następnie wykonać polecenie, które drukuje listę skróconą.

(set_prolog_flag documentation)


2.

?- atom_chars(goodbye_prolog, X) ; true. 

(AllOutput documentation)

Put ; true. na koniec rozmowy, która wynika z długiej listy. Następnie naciśnij przycisk klawiatury na klawiaturze. Wynik:

?- 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. 
Powiązane problemy