Declaratieve Talen/oplossingenSluiting: verschil tussen versies
Naar navigatie springen
Naar zoeken springen
Nieuwe pagina: <pre> % -- Deel 1 sluiting(Waar, Regels, Sluiting) :- select(Cond >> Cons, Regels, RemainingRegels), member2(Cond, Waar), !, append(Waar, Cons, NewWaar0), list_to_set(NewWaar... |
(geen verschil)
|
Versie van 17 jan 2009 15:18
% -- Deel 1 sluiting(Waar, Regels, Sluiting) :- select(Cond >> Cons, Regels, RemainingRegels), member2(Cond, Waar), !, append(Waar, Cons, NewWaar0), list_to_set(NewWaar0, NewWaar1), sluiting(NewWaar1, RemainingRegels, Sluiting). sluiting(X, _, X). member2(L1, L2) :- intersection(L1, L2, L1). % -- Deel 2 alleredundante(F, X) :- findall(Pad, ( select(Cond >> Cons, F, AndereRegels), isredundant(Cond, AndereRegels, Cons, Pad0), Pad = redundant(Cond >> Cons, Pad0) ), List), list_to_set(List, X). isredundant(From, Regels, To, Pad) :- select(Cond >> Cons, Regels, AndereRegels), ( member2(To, Cons) -> Pad = [Cond >> Cons], From = Cond ; isredundant(From0, AndereRegels, To, Pad0), ( member2(From0, Cons) -> Pad = [Cond >> Cons | Pad0], From = Cond ; Pad = Pad0, From = From0 ) ).