SWI-Prolog - show long list

后端 未结 5 948
猫巷女王i
猫巷女王i 2020-12-01 16:04

I\'m using SWI-Prolog and I\'m trying to print a list but if the list has more than 9 items - it look like that -

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


        
相关标签:
5条回答
  • 2020-12-01 16:32

    I've found two ways.


    1.

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

    Then do your command that is printing a truncated list.

    (set_prolog_flag documentation)


    2.

    ?- atom_chars(goodbye_prolog, X) ; true.
    

    (AllOutput documentation)

    Put ; true. at the end of the call that results in a long list. Then push the w key on your keyboard. The result is:

    ?- 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.
    
    0 讨论(0)
  • 2020-12-01 16:32

    If prolog returns only one answer, you can make it wait by typing "; true." after the predicate. Then, if you press "w", you will get to see the whole list as written in the doc : http://www.swi-prolog.org/FAQ/AllOutput.html

    0 讨论(0)
  • 2020-12-01 16:41

    Have a look at: http://www.swi-prolog.org/FAQ/AllOutput.html

    The simple solution is to type w after the answer is given, i.e.:

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

    After you have pressed the "w"-key "[write]" is displayed at the end and the full solution appears in the next line.

    0 讨论(0)
  • 2020-12-01 16:44
    ?- createListSomehow(List), print(List), nl.
    

    will do it neatly enough. That's what I do.

    Variation:

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

    The [] argument to print_term is an (empty) list of options. For more information, see documentation.

    0 讨论(0)
  • 2020-12-01 16:44

    If you want that SWI-Prolog will show the whole list by default you can add this line to your init file:

    :- set_prolog_flag(answer_write_options,[max_depth(0)]).
    

    You can modify the init file easily from the GUI (Settings => User init file).

    0 讨论(0)
提交回复
热议问题