Esempio n. 1
0
 private void SolveHiddenPair()
 {
     foreach (FieldContainer fieldContainer in fieldContainers)
     {
         List <Field>[] possibleValueOccurence = new List <Field> [9];
         for (int i = 1; i <= 9; i++)
         {
             possibleValueOccurence[i - 1] = fieldContainer.GetFields().Where(field => field.IsValuePossible(i)).ToList();
         }
         var listsWith2Fields = possibleValueOccurence.Where(list => list.Count == 2);
         if (listsWith2Fields.Count() < 2)
         {
             continue;
         }
         if (listsWith2Fields.Count() == 2)
         {
             // prüfen ob die Listen die selben Felder enthalten
             HashSet <Field> fieldHS1 = new System.Collections.Generic.HashSet <Field>(listsWith2Fields.First());
             if (fieldHS1.Equals(listsWith2Fields.Last()))
             {
                 // aus den möglichen Werten dieser beiden Felder alle Zahlen extrahieren, die auch in anderen Feldern vorkommen
                 // das Resultat sind die beiden Zahlen
                 MessageBox.Show("HiddenPair gefunden");
             }
             else
             {
                 //MessageBox.Show($@"{(Field)(listsWith2Fields.First()).PossibleValuesToString()}");
                 MessageBox.Show("Die Listen enthalten unterschiedliche Felder");
             }
         }
         else
         {
             MessageBox.Show("Mehr als 2 Zahlen gefunden, die nur in 2 Feldern sein können.");
             //string output = string.Empty;
             //foreach (List<Field> list in listsWith2Fields)
             //{
             //    foreach(Field field in list)
             //    {
             //        output += $"Nr.{field.FieldNumber} {field.PossibleValuesToString()}\n";
             //    }
             //}
             //MessageBox.Show(output);
         }
     }
 }