internal Pouring(IReadOnlyList<int> capacities, IReadOnlyList<int> state, Pouring previous, IMove move) { Capacities = capacities; State = state; Move = move; Previous = previous; }
public IEnumerable<Pouring> GetNextGeneration(Pouring pouring) { return moves .Where(m => m.CanPerform(pouring)) .Select(m => m.Perform(pouring)) .Where(p => !visited.Contains(p)) .Select(p => { visited.Add(p); return p; }); }
public Solution(Pouring last) { this.last = last; }