poset :: POSet :: select_greatest
var s = new POSet[String]
s.add_edge("B", "A")
s.add_edge("C", "A")
s.add_edge("D", "B")
s.add_edge("D", "C")
assert s.select_greatest(["A", "B"]) == ["A"]
assert s.select_greatest(["A", "B", "C"]) == ["A"]
assert s.select_greatest(["B", "C", "D"]) == ["B", "C"]
# Filter elements to return only the greatest ones
#
# ~~~
# var s = new POSet[String]
# s.add_edge("B", "A")
# s.add_edge("C", "A")
# s.add_edge("D", "B")
# s.add_edge("D", "C")
# assert s.select_greatest(["A", "B"]) == ["A"]
# assert s.select_greatest(["A", "B", "C"]) == ["A"]
# assert s.select_greatest(["B", "C", "D"]) == ["B", "C"]
# ~~~
fun select_greatest(elements: Collection[E]): Array[E]
do
var res = new Array[E]
for e in elements do
for f in elements do
if e == f then continue
if has_edge(e, f) then continue label
end
res.add(e)
end label
return res
end
lib/poset/poset.nit:349,2--372,4