Files
TILO/Praktikum2.pl
2026-01-04 15:14:47 +01:00

51 lines
2.8 KiB
Prolog
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
% !!! keine Variable mit Z
% Aufgabe 1 --------------------------------------------------------------
% a)
linListe(nil).
linListe(list(_, Xs)) :- linListe(Xs).
% b)
mem(X, list(X, _)).
mem(X, list(_, Ys)) :- mem(X, Ys).
app(nil, Ys, Ys).
app(list(X, Xs), Ys, list(X, Zs)) :- app(Xs, Ys, Zs).
% Ys=[[...],Zs] Zs=[Xs,[...]] => [[...],[Xs,[...]]]
infix(Xs, Ys) :- app(_, Zs, Ys), app(Xs, _, Zs).
% attach(Xs,X,Ys) Ys=list(X,Xs).
attach(nil, X, list(X, nil)).
% |-- Z --|
% Xs X list(H,list(X,T))
attach(list(H, T), X, list(H, Z)) :- attach(T, X, Z).
rev(nil, nil).
rev(list(X, Xs), Ys) :- rev(Xs, Zs), app(Zs, list(X, nil), Ys).
% Aufgabe 2 ----------------------------------------------------------------
% aus Aufgabe 21
binbaum(empty).
binbaum(node(_, LTB, RTB)):- binbaum(LTB), binbaum(RTB).
%Neuer Baum Xneub
construct(Root,LTB,RTB,node(Root, LTB, RTB)):- binbaum(LTB), binbaum(RTB).
%Notwendig zur Addition der einzelnen Knoten des Baumes
add(o, X, X).
add(s(X), Y, s(Z)):- add(X, Y, Z).
% Knotenanzahl N vom Baum, Baum links und rechts wird überprüft,
% Knotenanazhl von jeder Seite werden am Ende addiert, nachdem jeder
% einzelne Knoten in jedem Baum addiert wurde
knotenanz(empty, o).
knotenanz(node(_, LTB, RTB), s(N)):-
knotenanz(LTB, LN), knotenanz(RTB, RN), add(LN, RN, N),
binbaum(LTB), binbaum(RTB).