Zapocet v prologu..

Odeslat odpověď

Smajlíci
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode je zapnutý
[img] je zapnutý
[flash] je vypnutý
[url] je zapnuté
Smajlíci jsou zapnutí

Přehled tématu
   

Rozšířit náhled Přehled tématu: Zapocet v prologu..

Re: Zapocet v prologu..

od tomka » 10. 5. 2011 21:39

Díky za pomoc!

Re: Zapocet v prologu..

od PetrK » 6. 5. 2011 17:18

S definici binarniho stromu na neorientovanym grafu sem mel taky problem, v te uloze by mel byt asi orientovany graf, to by potom vypadalo nejak takhle:

Kód: Vybrat vše

binStrom:-najdiKoren(K), jeBinStrom([K], [K]).

najdiKoren(K):-h(K, _), not(h(_, K)), setof(Y, h(K, Y), Set), length(Set, L), L =< 2.

jeBinStrom([], _).
jeBinStrom([H|T], Acc):-findall(Y, h(H, Y), Set), jeCyklus(Set, Acc), length(Set, L), !, L =< 2, conc(Set, T, T2), conc(Set, Acc, Acc2), jeBinStrom(T2, Acc2).

jeCyklus([], _).
jeCyklus([H|T], A):-not(member(H, A)), jeCyklus(T, A).
Pokud by se jednalo opravdu o neorientovany graf, zkusil sem to modifikovat tak, aby vyhazoval hrany, co dou ze syna do otce:

Kód: Vybrat vše

binStrom:-najdiKoren(K), jeBinStrom([p(K, K)], []).

najdiKoren(K):-setof(X, oh(X, K), Set), length(Set, L), L =< 2.

jeBinStrom([], _).
jeBinStrom([p(X, P)|Zasobnik], Acc):-setof(Y, oh(X, Y), Set), vynechx(P, Set, S), jeCyklus(S, Acc), !, length(S, L), L =< 2, naZasobnik(X, S, Zasobnik, Z2), conc(S, Acc, Acc2), jeBinStrom(Z2, Acc2).

vynechx(_, [], []).
vynechx(X, [X|T], T):-!.
vynechx(X, [H|T], [H|TeloBezX]):-vynech(X, T, TeloBezX).

naZasobnik(_, [], Z, Z).
naZasobnik(X, [H|T], Z, Z2):-naZasobnik(X, T, [p(H, X)|Z], Z2).

jeCyklus([], _).
jeCyklus([H|T], A):-not(member(H, A)), jeCyklus(T, A).
Prolog mi taky nijak extra nejde, takze to bude urcite hodne daleko od idealniho reseni.

Zapocet v prologu..

od tomka » 6. 5. 2011 09:20

Cau mam problem se zapoctem v prologu zadaní zní:

"Na vstupu je zadan uzlove ohodnoceny souvisly graf. Napiste program v jazyce prolog, ktery rozhodne zda je dany graf binarnim stromem."

Pokud chapu zadani spravne mam dany graf napr:

h(0, 1).
h(1, 3).
h(2, 1).
h(2, 3).
h(0, 4).
h(3, 4).
h(4, 4).
h(3, 0).
h(4, 2).
oh(X, Y) :- h(X, Y).
oh(X, Y) :- h(Y, X).

reseni bude podle me easy... bohuzel za 5 cviceni ktere nam na to vyhradili po 5ti letech javy.. plave v tom vetsina tridy..... Za pripadne tipy diky moc

Nahoru