Esempio n. 1
0
        public void Combinations()
        {
            Nonogram nonogram = new Nonogram();
            var      result   = nonogram.Combinations(5, 5);

            Assert.AreEqual(126, result.Count);
        }
Esempio n. 2
0
        public void BruteForce_2()
        {
            Nonogram nonogram = new Nonogram();
            var      result   = nonogram.Possibilities(
                new int[] { 2, 1, 1, 2 }, 10);

            Assert.AreEqual(5, result.Count);
        }
Esempio n. 3
0
        public void BruteForce_1()
        {
            Nonogram nonogram = new Nonogram();
            var      result   = nonogram.Possibilities(
                new int[] { 3, 1, 1, 2 }, 10);

            Assert.AreEqual(1, result.Count);
            Assert.True(ArrayEquals(result[0],
                                    new byte[] { 1, 1, 1, 0, 1, 0, 1, 0, 1, 1 }));
        }
Esempio n. 4
0
        public void GCHQ()
        {
            Nonogram nonogram = new Nonogram();
            var      result   = nonogram.Solve(new byte[, ] {
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, },
                { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, },
                { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
            },
                                               new int[][] {
                new[] { 7, 2, 1, 1, 7 },
                new[] { 1, 1, 2, 2, 1, 1 },
                new[] { 1, 3, 1, 3, 1, 3, 1, 3, 1 },
                new[] { 1, 3, 1, 1, 5, 1, 3, 1 },
                new[] { 1, 3, 1, 1, 4, 1, 3, 1 },
                new[] { 1, 1, 1, 2, 1, 1 },
                new[] { 7, 1, 1, 1, 1, 1, 7 },
                new[] { 1, 1, 3 },
                new[] { 2, 1, 2, 1, 8, 2, 1 },
                new[] { 2, 2, 1, 2, 1, 1, 1, 2 },
                new[] { 1, 7, 3, 2, 1 },
                new[] { 1, 2, 3, 1, 1, 1, 1, 1 },
                new[] { 4, 1, 1, 2, 6 },
                new[] { 3, 3, 1, 1, 1, 3, 1 },
                new[] { 1, 2, 5, 2, 2 },
                new[] { 2, 2, 1, 1, 1, 1, 1, 2, 1 },
                new[] { 1, 3, 3, 2, 1, 8, 1 },
                new[] { 6, 2, 1 },
                new[] { 7, 1, 4, 1, 1, 3 },
                new[] { 1, 1, 1, 1, 4 },
                new[] { 1, 3, 1, 3, 7, 1 },
                new[] { 1, 3, 1, 1, 1, 2, 1, 1, 4 },
                new[] { 1, 3, 1, 4, 3, 3 },
                new[] { 1, 1, 2, 2, 2, 6, 1 },
                new[] { 7, 1, 3, 2, 1, 1 },
            },
                                               new int[][] {
                new[] { 7, 3, 1, 1, 7 },
                new[] { 1, 1, 2, 2, 1, 1 },
                new[] { 1, 3, 1, 3, 1, 1, 3, 1 },
                new[] { 1, 3, 1, 1, 6, 1, 3, 1 },
                new[] { 1, 3, 1, 5, 2, 1, 3, 1 },
                new[] { 1, 1, 2, 1, 1 },
                new[] { 7, 1, 1, 1, 1, 1, 7 },
                new[] { 3, 3 },
                new[] { 1, 2, 3, 1, 1, 3, 1, 1, 2 },
                new[] { 1, 1, 3, 2, 1, 1 },
                new[] { 4, 1, 4, 2, 1, 2 },
                new[] { 1, 1, 1, 1, 1, 4, 1, 3 },
                new[] { 2, 1, 1, 1, 2, 5 },
                new[] { 3, 2, 2, 6, 3, 1 },
                new[] { 1, 9, 1, 1, 2, 1 },
                new[] { 2, 1, 2, 2, 3, 1 },
                new[] { 3, 1, 1, 1, 1, 5, 1 },
                new[] { 1, 2, 2, 5 },
                new[] { 7, 1, 2, 1, 1, 1, 3 },
                new[] { 1, 1, 2, 1, 2, 2, 1 },
                new[] { 1, 3, 1, 4, 5, 1 },
                new[] { 1, 3, 1, 3, 10, 2 },
                new[] { 1, 3, 1, 1, 6, 6 },
                new[] { 1, 1, 2, 1, 1, 2 },
                new[] { 7, 2, 1, 2, 5 },
            }
                                               );

            for (int i = 0; i < 25; i++)
            {
                for (int j = 0; j < 25; j++)
                {
                    Console.Write(result[i, j]);
                }
                Console.WriteLine();
            }
            Assert.Pass();
        }