:- use_module(library(lists), [last/2]). :- use_module(contestlib, [sublist/2]). close_valves(Valves) :- setof((N-Valves),valves_activefaucets(Valves,N),L), last(L,N-Valves). valves_activefaucets(Valves,N) :- setof(valve(A,B),valve(A,B),AllValves), dripping(Drip), sublist(AllValves,Valves), \+ gets_water(Drip,Valves), findall(Faucet,(faucet(Faucet),gets_water(Faucet,Valves)),Faucets), length(Faucets,N).