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?
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?
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.
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
?- 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.
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.
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.
To nie działa, jeśli prolog zwraca tylko jedną odpowiedź. –
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