Ejemplo n.º 1
0
 public override bool HeuristicApplies(TekBoard board, TekField field)
 {
     Region.Clear();
     Region.AddField(field);
     foreach (TekField field2 in field.Influencers)
     {
         Region.AddField(field2);
         foreach (TekField field3 in field.Influencers)
         {
             if (field != field2 && field != field3 && field2 != field3)
             {
                 if (Region.IsTriplet(field3))
                 {
                     Region.AddField(field3);
                     AddHeuristicFields(Region.Fields);
                     AddValues(Region.GetTotalPossibleValues());
                     // determine affected fields
                     foreach (TekField f in field.CommonInfluencers(field2, field3))
                     {
                         foreach (int value in f.PossibleValues)
                         {
                             if (HeuristicValues.Contains(value))
                             {
                                 AddAffectedField(f);
                                 break;
                             }
                         }
                     }
                     if (AffectedFields.Count > 0)
                     {
                         return(true);
                     }
                     else
                     {
                         Reset();
                     }
                 }
             }
         }
         Region.RemoveField(field2);
     }
     return(false);
 }