Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- dlugosc([], 0).
- dlugosc([_|T], Lp):-dlugosc(T, L), Lp is L+1.
- naLiscie(X, [X|_]).
- naLiscie(X, [_|T]):-naLiscie(X, T).
- pierwszy([X|_], X).
- ostatni([X], X).
- ostatni([_|X], Y):-ostatni(X, Y).
- bezPierwszego([_], Wynik):-(Wynik = []).
- bezPierwszego([_|Y], Wynik):-Wynik = Y.
- dolacz([],Lista,Lista).
- dolacz([X|Y],Lista2,[X|Wynik]):-dolacz(Y,Lista2,Wynik).
- dolaczaj(Lista, N, Wynik):-(ostatni(Lista, X), X < N, Wiekszy is X+1, dolacz(Lista, [Wiekszy], Lista2), dolaczaj(Lista2, N, Wynik)); Wynik=Lista.
- lista(L, 0):-(L = []).
- lista(L, N):-(N > 0, P = [1], dolaczaj(P, N, L)).
- usun([X|Y], X, Tmp, TabWyn):-(TabWyn = [Tmp|Y]).
- usun([X|Y], A, Tmp, TabWyn):-(X=:=A, TabWyn = [Tmp|Y]); dolacz(Tmp, X, Tmp2), usun(Y, A, Tmp2, TabWyn).
- notInL2([X, Y|Z], L2, Arg):-(not naLiscie(X, L2), Arg = X); notInL2([Y|Z], L2, Arg).
- %prufer_decode([], ODP):-ODP = [(1, 2)].
- prufer_decode(P, ODP):-(dlugosc(P, D), N is D + 2, lista(L, N), prufer_decode(P, L, [], ODP), Z is N-1, dlugosc(ODP, Z)).
- prufer_decode(P, L, Krawedzie, ODP):-( dlugosc(L, Dlugosc), Dlugosc > 2, notInL2(L, P, Arg), pierwszy(P, Sasiad),
- dolacz(Krawedzie, [(Arg-Sasiad)], Krawedzie2), bezPierwszego(P, P2), usun(L, Arg, [], L2),
- prufer_decode(P2, L2, Krawedzie2, ODP) ); pierwszy(L, X), ostatni(L, Y), dolacz(Krawedzie, [(X-Y)], ODP).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement