Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }