listword(F1) :- see(F1), process(0, [], WS), seen, mydisplay(WS), !. process(0, W, WS) :- get0(C), process0(0, C, W, WS). process(1, W, WS) :- get0(C), process0(1, C, W, WS). process0(0, 10, [], WS) :- process(0, [], WS). process0(0, 32, [], WS) :- process(0, [], WS). process0(0, 9, [], WS) :- process(0, [], WS). process0(0, -1, [], []). process0(0, C, [], WS) :- process(1, [C], WS). process0(1, 10, W, WS) :- process(0, [], WS1), append(WS1, W, WS). process0(1, 32, W, WS) :- process(0, [], WS1), append(WS1, W, WS). process0(1, 9, W, WS) :- process(0, [], WS1), append(WS1, W, WS). process0(1, -1, W, [W]). process0(1, C, W, WS) :- append(W, C, D), process(1, D, WS). append([], A, [A]). append([H | T], A, [H | T1]) :- append(T, A, T1). mydisplay([]). mydisplay([X|T]) :- writef("%s", [X]), nl, mydisplay(T).