Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.24 KB | None | 0 0
  1. dlugosc([], 0).
  2. dlugosc([_|T], Lp):-dlugosc(T, L), Lp is L+1.
  3.  
  4. naLiscie(X, [X|_]).
  5. naLiscie(X, [_|T]):-naLiscie(X, T).
  6.  
  7. pierwszy([X|_], X).
  8.  
  9. ostatni([X], X).
  10. ostatni([_|X], Y):-ostatni(X, Y).
  11.  
  12. bezPierwszego([_], []).
  13. bezPierwszego([_|Y], Y).
  14. dolacz([],X,X).
  15. dolacz([X|Y],Lista2,[X|Wynik]):-dolacz(Y,Lista2,Wynik).
  16. dolaczaj(Lista, N, Wynik):-(ostatni(Lista, X), X < N, Wiekszy is X+1, dolacz(Lista, [Wiekszy], Lista2)-> dolaczaj(Lista2, N, Wynik)); (Wynik=Lista).
  17. lista(L, 0):-(L = []).
  18. lista(L, N):-(N > 0, P = [1], dolaczaj(P, N, L)).
  19. usun([X|Y], A, [], TabWyn):-(X=:=A -> TabWyn = Y); usun(Y, A, [X], TabWyn).
  20. usun([X|Y], A, Tmp, TabWyn):-(X=:=A -> dolacz(Tmp, Y, TabWyn)); dolacz(Tmp, [X], Tmp2), usun(Y, A, Tmp2, TabWyn).
  21.  
  22. notInL2([X, Y|Z], L2, Arg):-(not naLiscie(X, L2)-> Arg = X); notInL2([Y|Z], L2, Arg).
  23.  
  24.  
  25. prufer_decode(P, ODP):-(dlugosc(P, D), N is D + 2, lista(L, N), prufer_decode(P, L, [], ODP)).
  26. prufer_decode(P, L, Krawedzie, ODP):-( dlugosc(L, Dlugosc), Dlugosc > 2, notInL2(L, P, Arg), pierwszy(P, Sasiad),
  27.                                         dolacz(Krawedzie, [(Arg-Sasiad)], Krawedzie2), bezPierwszego(P, P2), usun(L, Arg, [], L2)->
  28.                                         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