public void SudokoBoard_Solve_HyperWithSolution()
        {
            // Arrange
            // http://en.wikipedia.org/wiki/File:A_nonomino_sudoku.svg
            string[] areas = new string[]
            {
                "111233333",
                "111222333",
                "144442223",
                "114555522",
                "444456666",
                "775555688",
                "977766668",
                "999777888",
                "999997888"
            };
            SudokuBoard board = SudokuFactory.ClassicWithSpecialBoxes(areas, new[]
            {
                "3.......4",
                "..2.6.1..",
                ".1.9.8.2.",
                "..5...6..",
                ".2.....1.",
                "..9...8..",
                ".8.3.4.6.",
                "..4.1.9..",
                "5.......7"
            });

            string[] tileDefinitions = new[]
            {
                "358196274",
                "492567138",
                "613978425",
                "175842693",
                "826453719",
                "249731856",
                "987324561",
                "734615982",
                "561289347"
            };

            // Act
            IEnumerable <SudokuBoard> solutions = board.Solve();

            // Assert
            Assert.Single(solutions);
            Assert.Equal(tileDefinitions, solutions.First().TileDefinitions);
        }