Ejemplo n.º 1
0
        /// <summary>
        /// Adds a new mapping between a value in the first finite domain to a value in the second finite domain
        /// </summary>
        /// <param name="first"></param>
        /// <param name="second"></param>
        public void Add(T1 first, T2 second)
        {
            int forwardIndex  = Start.IndexOf(first);
            int backwardIndex = End.IndexOf(second);

            _mapping[forwardIndex] = _mapping[forwardIndex] | BitHelper.GetMask(backwardIndex);

            _backwardMapping[backwardIndex] = _backwardMapping[backwardIndex] | BitHelper.GetMask(forwardIndex);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Constrains <paramref name="variable"/> to <paramref name="value"/>
 /// </summary>
 public static void Equal <T>(FiniteDomainVariable <T> variable, T value)
 {
     variable.BackdoorSet(variable.AllowableValues & BitHelper.GetMask(variable.FiniteDomain.IndexOf(value)));
 }