[[
✎ pl:prolog:pllib:flatten_3
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Flatten 3 ====== {{tag>lists operators}} ===== Description ===== Flattening a list using a queue **Source**: The Art of Prolog ===== Download ===== Program source code: {{flatten_3.pl}} ===== Listing ===== <code prolog> /* flatten(Xs,Ys) :- Ys is a flattened list containing the elements in Xs. */ :- op(40,xfx,\). flatten(Xs,Ys) :- flatten_q(Xs,Qs\Qs,Ys). flatten_q([X|Xs],Ps\[Xs|Qs],Ys) :- flatten_q(X,Ps\Qs,Ys). flatten_q(X,[Q|Ps]\Qs,[X|Ys]) :- constant(X), X \= [], flatten_q(Q,Ps\Qs,Ys). flatten_q([],Q,Ys) :- non_empty(Q), dequeue(X,Q,Q1), flatten_q(X,Q1,Ys). flatten_q([],[]\[],[]). non_empty([]\[]) :- !, fail. non_empty(Q). dequeue(X,[X|Qh]\Qt,Qh\Qt). % Program 15.12: Flattening a list using a queue </code> ===== Comments =====
pl/prolog/pllib/flatten_3.txt
· ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry