public int SolveSecond() { var hashs = new List <string>(); var squareSet = new HashSet <Square>(); for (int i = 0; i < 128; i++) { var tempHash = $"{_stringKey}-{i}"; var hash = new TenthPuzzle.PuzzleSolver(tempHash).SolveSecond(); var binarystring = string.Join(string.Empty, hash.Select( c => Convert.ToString(Convert.ToInt32(c.ToString(), 16), 2).PadLeft(4, '0') ) ); hashs.Add(binarystring); } var numOfGroups = 0; for (int i = 0; i < 128; i++) { for (int j = 0; j < 128; j++) { if (IsInGroup(squareSet, new Square(j, i), hashs)) { numOfGroups++; } } } return(numOfGroups); }
public int SolveFirst() { var numOfUsedSpaces = 0; for (int i = 0; i < 128; i++) { var tempHash = $"{_stringKey}-{i}"; var hash = new TenthPuzzle.PuzzleSolver(tempHash).SolveSecond(); var binarystring = string.Join(string.Empty, hash.Select( c => Convert.ToString(Convert.ToInt32(c.ToString(), 16), 2).PadLeft(4, '0') ) ); numOfUsedSpaces += binarystring.Count(c => c == '1'); } return(numOfUsedSpaces); }