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([_], []).
- bezPierwszego([_|Y], Y).
- dolacz([],X,X).
- 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], A, [], TabWyn):-(X=:=A -> TabWyn = Y); usun(Y, A, [X], TabWyn).
- usun([X|Y], A, Tmp, TabWyn):-(X=:=A -> dolacz(Tmp, Y, TabWyn)); 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(P, ODP):-(dlugosc(P, D), N is D + 2, lista(L, N), prufer_decode(P, L, [], ODP)).
- 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