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); } } }