Loresoft Software-Development
   
Hauptmenü
Artikel
Artikelsuche
 
Titel: Prolog Listen Operationen
Beschreibung: Die Wichtigsten Listen-Operationen mit Prolog: Suche in einer Liste, Liste in Teillisten auftrennen, Listen miteinander verketten, Liste sortieren
Kategorie: Programmierung
Unterkategorie Prolog
Benötigtes Fachwissen: Fortgeschrittene
 
Artikel überarbeiten: Prolog Listen Operationen
 
Hat Ihnen die Seite weitergeholfen? 2 (gut)
sehr gut sehr schlecht



Prolog Listen
Hier finden Sie Programmbeispiele zu den wichtigsten Operationen beim Umgang mit Listen in Prolog.


Suche, ob alle Elemente in Liste A auch in Liste B vorkommen
suche( [], _ ).
suche( [H|T], ListeB ) :- member( H, ListeB ), suche( T, ListeB ).


|?- suche( [eins, zwei, drei], [null, eins, zwei, drei, vier] ).

% Ausgabe:
% yes
Liste anhand eines Trennzeichens in zwei Teillisten zerlegen
zerlege( _, [], [], [] ) :- !
zerlege( X, [H|T], [], T ) :- !
zerlege( X, [H|T], [H|R1], R2 ) :- zerlegen( X, T, R1, R2 ).


|?- zerlege(/, [n,a,m,e,/,v,o,r,n,a,m,e], Liste1, Liste2 ).

% Ausgabe:
% Liste1 = [n,a,m,e]
% Liste2 = [v,o,r,n,a,m,e]
Liste anhand beliebig vieler Trennzeichen in Teillisten zerlegen
% Listendefinition aus obiger Beispiel
zerlege( _, [], [], [] ) :- !
zerlege( X, [H|T], [], T ) :- !
zerlege( X, [H|T], [H|R1], R2 ) :- zerlegen( X, T, R1, R2 ).

% Inklusive neuer Listendefinition
zerlege( _, [], [] ) :- !.
zerlege( X, L, [E|S] ) :- zerlege( X, L, E, R ), zerlege( X, R, S ).


|?- zerlege( /, [n,a,m,e,/,p,l,z,/,o,r,t], M).

% Ausgabe:
% M = [ [n,a,m,e], [p,l,z], [o,r,t] ]
Summe einer Liste berechnen
summe( [], 0 ) :- !.
summe( [H|T], S ) :- summe( T, S1 ), S is H + S1.


|?- summe( [2,3,4], S ).

% Ausgabe:
% S = 9
Zwei Listen miteinander verketten
verkette( [], L2, L2 ).
verkette( [H|T1], L2, [H|T] ) :- verkette( T1, L2, T ).


|?- verkette( [1,2,3,4,5], [4,6,1], L ).

% Ausgabe:
% L = [1,2,3,4,5,4,6,1]
Zwei Listen miteinander verketten, jedes Element dabei nur einmal speichern
vereinigung( [], L2, L2 ).
vereinigung( [H|T1], L2, L ) :- member( H, L2 ), !, vereinigung( T1, L2, L ).
vereinigung( [H|T1], L2, [H|T] ) :- vereinigung( T1, L2, T ).


|?- vereinigung( [1,2,3,4,5], [4,6,1], L ).

% Ausgabe:
% L = [2,3,5,4,6,1]
Zahlen aufsteigend sortiert in Liste einfügen
insert( X, [], [X] ) :- !.
insert( X, [H|R], [X,H|R] ) :- X =< H, !.
insert( X, [H|R], [H|T] ):- insert( X, R, T ).


|?- insert(4, [1,3,8,9], M).

% Ausgabe:
% M = [1,3,4,8,9]
Unsortierte Liste sortieren
insertSort( [], [] ).
insertSort( [X|R], G ) :- insertSort( R, T ), insert( X, T, G ).


|?- insertSort( [4,2,1,6,5,3], G ).

% Ausgabe:
% G = 1,2,3,4,5,6
aktuelle Seitenaufbauzeit: 862.57 ms.