public void Find6and0() { var hs1 = new HashSet <char>(Digits[1].ToCharArray()); var coll = UniqueValues.Where(uv => uv.Key.Length == 6).ToList(); foreach (var uv in coll) { var hs = new HashSet <char>(Digits[8].ToCharArray()); hs.ExceptWith(uv.Key.ToCharArray()); char ch = hs.Single(); if (hs1.Contains(ch)) { Digits.Add(6, uv.Key); C = ch; } else if (Digits[9] == uv.Key) { // 9 already found ; } else { // D D = ch; Digits.Add(0, uv.Key); } } }
public void FindGand9() { var coll = UniqueValues.Where(uv => uv.Key.Length == 6).ToList(); foreach (var uv in coll) { var hs = new HashSet <char>(uv.Key.ToCharArray()); var chs = new List <char>(Digits[4].ToCharArray()); chs.Add(A); hs.ExceptWith(chs); if (hs.Count == 1) { G = hs.Single(); Digits.Add(9, uv.Key); return; } } }
public void FindTwoThreeFive() { var hs1 = new HashSet <char>(Digits[1].ToCharArray()); var coll = UniqueValues.Where(uv => uv.Key.Length == 5).ToList(); foreach (var uv in coll) { var hs = new HashSet <char>(uv.Key.ToCharArray()); if (hs1.IsProperSubsetOf(hs)) { Digits.Add(3, uv.Key); } else if (hs.Contains(C)) { Digits.Add(2, uv.Key); } else { Digits.Add(5, uv.Key); } } }