예제 #1
0
        /// <summary>
        /// Removes an assignment and recover pruned variables
        /// </summary>
        /// <param name="var">Removes the assignment for this variable and adds pruned variables.</param>
        public void RemoveValue(Variable var)
        {
            Vector2    varPos = var.pos;
            Assignment assign = assignments.First(a => a.variable.pos == varPos);

            foreach (var varPrune in assign.domainPrune.Keys)
            {
                List <OverFloorType> valuesPruned = assign.domainPrune[varPrune];
                Variable             varToUnprune = vars.First(v => v.pos == varPrune);
                foreach (var vPrune in valuesPruned)
                {
                    varToUnprune.addDomainElement(vPrune);
                }
            }
            assignments.Remove(assign);
        }