public void Combinations() { Nonogram nonogram = new Nonogram(); var result = nonogram.Combinations(5, 5); Assert.AreEqual(126, result.Count); }
public void BruteForce_2() { Nonogram nonogram = new Nonogram(); var result = nonogram.Possibilities( new int[] { 2, 1, 1, 2 }, 10); Assert.AreEqual(5, result.Count); }
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 })); }
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(); }