defmodule CPSolver.Constraint.Maximum do @moduledoc """ 'Maximum' constraint: y = max[x_array] x_array is a list of variables """ use CPSolver.Constraint alias CPSolver.Propagator.Maximum, as: MaximumPropagator alias CPSolver.IntVariable, as: Variable @spec new(Variable.variable_or_view(), [Variable.variable_or_view()]) :: Constraint.t() def new(c, x_array) when is_integer(c) do new(Variable.new(c), x_array) end def new(y, x_array) do new([y | x_array]) end @impl true def propagators([_max_var | _var_list] = vars) do [MaximumPropagator.new(vars)] end end