private IEnumerable <TSet> Goto(TSetSet sets, TSet set) { foreach (var newSet in Goto(set)) { if (sets.TryGetValue(newSet, out var already)) { newSet.Patch(already); } else { sets.Add(newSet); newSet.Patch(newSet); yield return(newSet); } } }
public Closer(TSetSet sets, TSet set) { Sets = sets; Set0 = set; Todo = new Stack <TSet>(); }
public Closer2(TSetSet sets, TSet set) { Sets = sets; Set0 = set; Todo = new Queue <TSet>(); }