Example #1
0
 public void Part1()
 {
     CreateAndRunComputer(new[] { 1, 330, 331, 332, 109, 3594, 1102, 1182, 1, 15, 1102, 1, 1487, 24, 1001, 0, 0, 570, 1006, 570, 36, 1001, 571, 0, 0, 1001, 570, -1, 570, 1001, 24, 1, 24, 1106, 0, 18, 1008, 571, 0, 571, 1001, 15, 1, 15, 1008, 15, 1487, 570, 1006, 570, 14, 21102, 1, 58, 0, 1106, 0, 786, 1006, 332, 62, 99, 21101, 0, 333, 1, 21102, 73, 1, 0, 1106, 0, 579, 1102, 1, 0, 572, 1102, 0, 1, 573, 3, 574, 101, 1, 573, 573, 1007, 574, 65, 570, 1005, 570, 151, 107, 67, 574, 570, 1005, 570, 151, 1001, 574, -64, 574, 1002, 574, -1, 574, 1001, 572, 1, 572, 1007, 572, 11, 570, 1006, 570, 165, 101, 1182, 572, 127, 1001, 574, 0, 0, 3, 574, 101, 1, 573, 573, 1008, 574, 10, 570, 1005, 570, 189, 1008, 574, 44, 570, 1006, 570, 158, 1105, 1, 81, 21101, 0, 340, 1, 1106, 0, 177, 21102, 1, 477, 1, 1106, 0, 177, 21101, 0, 514, 1, 21101, 0, 176, 0, 1105, 1, 579, 99, 21102, 184, 1, 0, 1106, 0, 579, 4, 574, 104, 10, 99, 1007, 573, 22, 570, 1006, 570, 165, 1001, 572, 0, 1182, 21102, 375, 1, 1, 21102, 211, 1, 0, 1106, 0, 579, 21101, 1182, 11, 1, 21101, 222, 0, 0, 1106, 0, 979, 21101, 0, 388, 1, 21102, 233, 1, 0, 1105, 1, 579, 21101, 1182, 22, 1, 21102, 244, 1, 0, 1105, 1, 979, 21102, 401, 1, 1, 21102, 255, 1, 0, 1106, 0, 579, 21101, 1182, 33, 1, 21102, 1, 266, 0, 1105, 1, 979, 21102, 1, 414, 1, 21101, 0, 277, 0, 1106, 0, 579, 3, 575, 1008, 575, 89, 570, 1008, 575, 121, 575, 1, 575, 570, 575, 3, 574, 1008, 574, 10, 570, 1006, 570, 291, 104, 10, 21101, 1182, 0, 1, 21101, 0, 313, 0, 1105, 1, 622, 1005, 575, 327, 1101, 1, 0, 575, 21102, 327, 1, 0, 1105, 1, 786, 4, 438, 99, 0, 1, 1, 6, 77, 97, 105, 110, 58, 10, 33, 10, 69, 120, 112, 101, 99, 116, 101, 100, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 97, 109, 101, 32, 98, 117, 116, 32, 103, 111, 116, 58, 32, 0, 12, 70, 117, 110, 99, 116, 105, 111, 110, 32, 65, 58, 10, 12, 70, 117, 110, 99, 116, 105, 111, 110, 32, 66, 58, 10, 12, 70, 117, 110, 99, 116, 105, 111, 110, 32, 67, 58, 10, 23, 67, 111, 110, 116, 105, 110, 117, 111, 117, 115, 32, 118, 105, 100, 101, 111, 32, 102, 101, 101, 100, 63, 10, 0, 37, 10, 69, 120, 112, 101, 99, 116, 101, 100, 32, 82, 44, 32, 76, 44, 32, 111, 114, 32, 100, 105, 115, 116, 97, 110, 99, 101, 32, 98, 117, 116, 32, 103, 111, 116, 58, 32, 36, 10, 69, 120, 112, 101, 99, 116, 101, 100, 32, 99, 111, 109, 109, 97, 32, 111, 114, 32, 110, 101, 119, 108, 105, 110, 101, 32, 98, 117, 116, 32, 103, 111, 116, 58, 32, 43, 10, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 115, 32, 109, 97, 121, 32, 98, 101, 32, 97, 116, 32, 109, 111, 115, 116, 32, 50, 48, 32, 99, 104, 97, 114, 97, 99, 116, 101, 114, 115, 33, 10, 94, 62, 118, 60, 0, 1, 0, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 12, 20, 0, 109, 4, 1202, -3, 1, 587, 20101, 0, 0, -1, 22101, 1, -3, -3, 21102, 1, 0, -2, 2208, -2, -1, 570, 1005, 570, 617, 2201, -3, -2, 609, 4, 0, 21201, -2, 1, -2, 1106, 0, 597, 109, -4, 2106, 0, 0, 109, 5, 2101, 0, -4, 630, 20101, 0, 0, -2, 22101, 1, -4, -4, 21102, 1, 0, -3, 2208, -3, -2, 570, 1005, 570, 781, 2201, -4, -3, 653, 20102, 1, 0, -1, 1208, -1, -4, 570, 1005, 570, 709, 1208, -1, -5, 570, 1005, 570, 734, 1207, -1, 0, 570, 1005, 570, 759, 1206, -1, 774, 1001, 578, 562, 684, 1, 0, 576, 576, 1001, 578, 566, 692, 1, 0, 577, 577, 21101, 0, 702, 0, 1106, 0, 786, 21201, -1, -1, -1, 1105, 1, 676, 1001, 578, 1, 578, 1008, 578, 4, 570, 1006, 570, 724, 1001, 578, -4, 578, 21102, 1, 731, 0, 1105, 1, 786, 1106, 0, 774, 1001, 578, -1, 578, 1008, 578, -1, 570, 1006, 570, 749, 1001, 578, 4, 578, 21101, 0, 756, 0, 1106, 0, 786, 1105, 1, 774, 21202, -1, -11, 1, 22101, 1182, 1, 1, 21101, 0, 774, 0, 1106, 0, 622, 21201, -3, 1, -3, 1106, 0, 640, 109, -5, 2105, 1, 0, 109, 7, 1005, 575, 802, 21001, 576, 0, -6, 20102, 1, 577, -5, 1105, 1, 814, 21101, 0, 0, -1, 21101, 0, 0, -5, 21102, 1, 0, -6, 20208, -6, 576, -2, 208, -5, 577, 570, 22002, 570, -2, -2, 21202, -5, 49, -3, 22201, -6, -3, -3, 22101, 1487, -3, -3, 1202, -3, 1, 843, 1005, 0, 863, 21202, -2, 42, -4, 22101, 46, -4, -4, 1206, -2, 924, 21101, 1, 0, -1, 1106, 0, 924, 1205, -2, 873, 21102, 35, 1, -4, 1105, 1, 924, 1202, -3, 1, 878, 1008, 0, 1, 570, 1006, 570, 916, 1001, 374, 1, 374, 1202, -3, 1, 895, 1102, 1, 2, 0, 1201, -3, 0, 902, 1001, 438, 0, 438, 2202, -6, -5, 570, 1, 570, 374, 570, 1, 570, 438, 438, 1001, 578, 558, 922, 20101, 0, 0, -4, 1006, 575, 959, 204, -4, 22101, 1, -6, -6, 1208, -6, 49, 570, 1006, 570, 814, 104, 10, 22101, 1, -5, -5, 1208, -5, 43, 570, 1006, 570, 810, 104, 10, 1206, -1, 974, 99, 1206, -1, 974, 1102, 1, 1, 575, 21101, 973, 0, 0, 1106, 0, 786, 99, 109, -7, 2106, 0, 0, 109, 6, 21102, 0, 1, -4, 21101, 0, 0, -3, 203, -2, 22101, 1, -3, -3, 21208, -2, 82, -1, 1205, -1, 1030, 21208, -2, 76, -1, 1205, -1, 1037, 21207, -2, 48, -1, 1205, -1, 1124, 22107, 57, -2, -1, 1205, -1, 1124, 21201, -2, -48, -2, 1105, 1, 1041, 21102, 1, -4, -2, 1105, 1, 1041, 21102, 1, -5, -2, 21201, -4, 1, -4, 21207, -4, 11, -1, 1206, -1, 1138, 2201, -5, -4, 1059, 1202, -2, 1, 0, 203, -2, 22101, 1, -3, -3, 21207, -2, 48, -1, 1205, -1, 1107, 22107, 57, -2, -1, 1205, -1, 1107, 21201, -2, -48, -2, 2201, -5, -4, 1090, 20102, 10, 0, -1, 22201, -2, -1, -2, 2201, -5, -4, 1103, 2102, 1, -2, 0, 1105, 1, 1060, 21208, -2, 10, -1, 1205, -1, 1162, 21208, -2, 44, -1, 1206, -1, 1131, 1105, 1, 989, 21101, 439, 0, 1, 1105, 1, 1150, 21101, 477, 0, 1, 1105, 1, 1150, 21101, 0, 514, 1, 21101, 0, 1149, 0, 1105, 1, 579, 99, 21102, 1, 1157, 0, 1106, 0, 579, 204, -2, 104, 10, 99, 21207, -3, 22, -1, 1206, -1, 1138, 1202, -5, 1, 1176, 2102, 1, -4, 0, 109, -6, 2105, 1, 0, 14, 9, 40, 1, 7, 1, 40, 1, 7, 1, 40, 1, 7, 1, 40, 1, 7, 1, 40, 1, 7, 1, 40, 1, 7, 1, 40, 1, 7, 1, 40, 1, 3, 5, 1, 7, 5, 13, 14, 1, 3, 1, 5, 1, 5, 1, 5, 1, 11, 1, 14, 1, 3, 1, 5, 1, 5, 1, 5, 1, 11, 1, 14, 1, 3, 1, 5, 1, 5, 1, 5, 1, 11, 1, 14, 7, 3, 1, 3, 13, 7, 1, 18, 1, 1, 1, 3, 1, 3, 1, 1, 1, 5, 1, 3, 1, 7, 1, 18, 1, 1, 1, 3, 13, 3, 1, 7, 1, 18, 1, 1, 1, 7, 1, 1, 1, 9, 1, 7, 1, 18, 1, 1, 1, 7, 1, 1, 1, 9, 9, 18, 1, 1, 1, 7, 1, 1, 1, 32, 13, 1, 1, 1, 1, 3, 7, 22, 1, 3, 1, 1, 1, 5, 1, 1, 1, 1, 1, 3, 1, 5, 1, 8, 13, 1, 1, 3, 13, 3, 1, 5, 1, 8, 1, 13, 1, 5, 1, 5, 1, 1, 1, 5, 1, 5, 1, 8, 1, 13, 1, 5, 1, 5, 1, 1, 1, 5, 1, 5, 1, 8, 1, 13, 1, 5, 1, 5, 1, 1, 1, 5, 1, 5, 1, 8, 1, 13, 7, 5, 1, 1, 13, 8, 1, 25, 1, 7, 1, 14, 1, 5, 9, 11, 1, 7, 1, 14, 1, 5, 1, 7, 1, 11, 1, 7, 1, 14, 1, 5, 1, 7, 1, 11, 1, 7, 1, 14, 1, 5, 1, 7, 1, 11, 1, 7, 1, 14, 1, 5, 1, 7, 13, 7, 7, 8, 1, 5, 1, 33, 1, 8, 7, 33, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 40, 9, 8 });
     string.Join("", AllOutput.Select(x => (char)x)).Split("\n", StringSplitOptions.RemoveEmptyEntries).ShouldBe(new[] {
         "..............#########..........................",
         "..............#.......#..........................",
         "..............#.......#..........................",
         "..............#.......#..........................",
         "..............#.......#..........................",
         "..............#.......#..........................",
         "..............#.......#..........................",
         "..............#.......#..........................",
         "..............#...#####.#######.....#############",
         "..............#...#.....#.....#.....#...........#",
         "..............#...#.....#.....#.....#...........#",
         "..............#...#.....#.....#.....#...........#",
         "..............#######...#...#############.......#",
         "..................#.#...#...#.#.....#...#.......#",
         "..................#.#...#############...#.......#",
         "..................#.#.......#.#.........#.......#",
         "..................#.#.......#.#.........#########",
         "..................#.#.......#.#..................",
         "..............#############.#.#...#######........",
         "..............#...#.#.....#.#.#...#.....#........",
         "############^.#...#############...#.....#........",
         "#.............#.....#.....#.#.....#.....#........",
         "#.............#.....#.....#.#.....#.....#........",
         "#.............#.....#.....#.#.....#.....#........",
         "#.............#######.....#.#############........",
         "#.........................#.......#..............",
         "#.....#########...........#.......#..............",
         "#.....#.......#...........#.......#..............",
         "#.....#.......#...........#.......#..............",
         "#.....#.......#...........#.......#..............",
         "#.....#.......#############.......#######........",
         "#.....#.................................#........",
         "#######.................................#........",
         "........................................#........",
         "........................................#........",
         "........................................#........",
         "........................................#........",
         "........................................#........",
         "........................................#........",
         "........................................#........",
         "........................................#........",
         "........................................#........",
         "................................#########........"
     });
 }
Example #2
0
 public void Part2()
 {
     SetNextInput(2);
     CreateAndRunComputer(new[] { 1102, 34463338, 34463338, 63, 1007, 63, 34463338, 63, 1005, 63, 53, 1101, 3, 0, 1000, 109, 988, 209, 12, 9, 1000, 209, 6, 209, 3, 203, 0, 1008, 1000, 1, 63, 1005, 63, 65, 1008, 1000, 2, 63, 1005, 63, 904, 1008, 1000, 0, 63, 1005, 63, 58, 4, 25, 104, 0, 99, 4, 0, 104, 0, 99, 4, 17, 104, 0, 99, 0, 0, 1101, 37, 0, 1013, 1101, 426, 0, 1027, 1101, 36, 0, 1000, 1101, 0, 606, 1023, 1102, 34, 1, 1011, 1102, 1, 712, 1029, 1102, 1, 27, 1007, 1101, 831, 0, 1024, 1102, 32, 1, 1002, 1102, 1, 1, 1021, 1101, 429, 0, 1026, 1102, 1, 826, 1025, 1101, 0, 717, 1028, 1102, 1, 20, 1018, 1101, 0, 24, 1004, 1102, 31, 1, 1009, 1101, 22, 0, 1015, 1102, 38, 1, 1014, 1102, 613, 1, 1022, 1102, 29, 1, 1017, 1102, 0, 1, 1020, 1102, 1, 21, 1008, 1102, 33, 1, 1012, 1101, 0, 30, 1006, 1101, 0, 28, 1016, 1102, 1, 26, 1005, 1102, 35, 1, 1019, 1101, 25, 0, 1003, 1102, 1, 23, 1001, 1102, 1, 39, 1010, 109, -3, 2102, 1, 5, 63, 1008, 63, 34, 63, 1005, 63, 205, 1001, 64, 1, 64, 1106, 0, 207, 4, 187, 1002, 64, 2, 64, 109, -2, 1201, 7, 0, 63, 1008, 63, 34, 63, 1005, 63, 227, 1105, 1, 233, 4, 213, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, 21, 21102, 40, 1, 3, 1008, 1019, 37, 63, 1005, 63, 257, 1001, 64, 1, 64, 1106, 0, 259, 4, 239, 1002, 64, 2, 64, 109, -4, 21101, 41, 0, 2, 1008, 1014, 38, 63, 1005, 63, 279, 1105, 1, 285, 4, 265, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -10, 1201, 4, 0, 63, 1008, 63, 30, 63, 1005, 63, 307, 4, 291, 1105, 1, 311, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, 6, 1207, 0, 22, 63, 1005, 63, 329, 4, 317, 1105, 1, 333, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -5, 1207, 5, 20, 63, 1005, 63, 353, 1001, 64, 1, 64, 1106, 0, 355, 4, 339, 1002, 64, 2, 64, 109, 8, 2108, 29, -5, 63, 1005, 63, 375, 1001, 64, 1, 64, 1105, 1, 377, 4, 361, 1002, 64, 2, 64, 109, 15, 1206, -6, 395, 4, 383, 1001, 64, 1, 64, 1105, 1, 395, 1002, 64, 2, 64, 109, -11, 21107, 42, 43, 4, 1005, 1019, 413, 4, 401, 1106, 0, 417, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, 6, 2106, 0, 6, 1105, 1, 435, 4, 423, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -15, 1208, -3, 24, 63, 1005, 63, 455, 1001, 64, 1, 64, 1105, 1, 457, 4, 441, 1002, 64, 2, 64, 109, -13, 1208, 10, 25, 63, 1005, 63, 475, 4, 463, 1106, 0, 479, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, 21, 21108, 43, 42, 3, 1005, 1017, 495, 1106, 0, 501, 4, 485, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -14, 2107, 31, 2, 63, 1005, 63, 519, 4, 507, 1106, 0, 523, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -4, 1202, 8, 1, 63, 1008, 63, 24, 63, 1005, 63, 549, 4, 529, 1001, 64, 1, 64, 1105, 1, 549, 1002, 64, 2, 64, 109, 1, 2108, 23, 4, 63, 1005, 63, 567, 4, 555, 1105, 1, 571, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, 2, 2101, 0, 5, 63, 1008, 63, 21, 63, 1005, 63, 591, 1105, 1, 597, 4, 577, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, 28, 2105, 1, -4, 1001, 64, 1, 64, 1105, 1, 615, 4, 603, 1002, 64, 2, 64, 109, -10, 1205, 4, 633, 4, 621, 1001, 64, 1, 64, 1106, 0, 633, 1002, 64, 2, 64, 109, 2, 1206, 2, 645, 1106, 0, 651, 4, 639, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -4, 1202, -6, 1, 63, 1008, 63, 28, 63, 1005, 63, 671, 1105, 1, 677, 4, 657, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -9, 21102, 44, 1, 4, 1008, 1010, 44, 63, 1005, 63, 699, 4, 683, 1105, 1, 703, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, 31, 2106, 0, -9, 4, 709, 1105, 1, 721, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -30, 21108, 45, 45, 6, 1005, 1013, 743, 4, 727, 1001, 64, 1, 64, 1106, 0, 743, 1002, 64, 2, 64, 109, 2, 21101, 46, 0, 3, 1008, 1012, 46, 63, 1005, 63, 765, 4, 749, 1106, 0, 769, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -5, 2101, 0, 0, 63, 1008, 63, 24, 63, 1005, 63, 795, 4, 775, 1001, 64, 1, 64, 1105, 1, 795, 1002, 64, 2, 64, 109, 6, 2107, 32, -1, 63, 1005, 63, 815, 1001, 64, 1, 64, 1106, 0, 817, 4, 801, 1002, 64, 2, 64, 109, 19, 2105, 1, -5, 4, 823, 1106, 0, 835, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -12, 21107, 47, 46, -1, 1005, 1016, 851, 1105, 1, 857, 4, 841, 1001, 64, 1, 64, 1002, 64, 2, 64, 109, -2, 1205, 5, 873, 1001, 64, 1, 64, 1105, 1, 875, 4, 863, 1002, 64, 2, 64, 109, -6, 2102, 1, -8, 63, 1008, 63, 23, 63, 1005, 63, 897, 4, 881, 1105, 1, 901, 1001, 64, 1, 64, 4, 64, 99, 21101, 0, 27, 1, 21101, 0, 915, 0, 1106, 0, 922, 21201, 1, 44808, 1, 204, 1, 99, 109, 3, 1207, -2, 3, 63, 1005, 63, 964, 21201, -2, -1, 1, 21101, 942, 0, 0, 1105, 1, 922, 21201, 1, 0, -1, 21201, -2, -3, 1, 21102, 957, 1, 0, 1105, 1, 922, 22201, 1, -1, -2, 1106, 0, 968, 21202, -2, 1, -2, 109, -3, 2105, 1, 0 });
     AllOutput.ShouldBe(new[] { 66113L });
 }
Example #3
0
 public void Example1()
 {
     CreateAndRunComputer(new[] { 109, 1, 204, -1, 1001, 100, 1, 100, 1008, 100, 16, 101, 1006, 101, 0, 99 });
     AllOutput.ShouldBe(new long[] { 109, 1, 204, -1, 1001, 100, 1, 100, 1008, 100, 16, 101, 1006, 101, 0, 99 });
 }