#include "2017/day1/aoc.h" #include "2017/day2/aoc.h" #include "2017/day3/aoc.h" #include "2017/day4/aoc.h" #include "2017/day5/aoc.h" #include "2017/day6/aoc.h" #include "2017/day7/aoc.h" #include "2017/day8/aoc.h" #include "2017/day9/aoc.h" #include "2017/day10/aoc.h" #include "2017/day11/aoc.h" #include "2017/day12/aoc.h" #include "2017/day13/aoc.h" #include "2017/day14/aoc.h" #include "2017/day15/aoc.h" #include "2017/day16/aoc.h" #include "2017/day17/aoc.h" #include "2017/day18/aoc.h" #include "2017/day19/aoc.h" #include "2017/day20/aoc.h" #include "2017/day21/aoc.h" #include "2017/day22/aoc.h" #include "2017/day23/aoc.h" #include "2017/day24/aoc.h" #include "2017/day25/aoc.h" #include "catch.hpp" #include TEST_CASE("Inverse Captcha", "[2017]") { line_view lv = load_file("../src/2017/day1/input"); REQUIRE(1253 == aoc2017::day1(lv)); REQUIRE(4 == aoc2017::day1("1111")); REQUIRE(3 == aoc2017::day1("1122")); REQUIRE(1278 == aoc2017::day1part2(lv)); REQUIRE(6 == aoc2017::day1part2("1212")); REQUIRE(0 == aoc2017::day1part2("1221")); REQUIRE(4 == aoc2017::day1part2("123425")); REQUIRE(12 == aoc2017::day1part2("123123")); REQUIRE(4 == aoc2017::day1part2("12131415")); } TEST_CASE("Corruption Checksum", "[2017]") { line_view lv = load_file("../src/2017/day2/input"); auto p = aoc2017::day2(lv); REQUIRE(43074 == p.first); REQUIRE(280 == p.second); } TEST_CASE("Spiral Memory", "[2017]") { REQUIRE(2 == aoc2017::day3(9)); REQUIRE(2 == aoc2017::day3(11)); REQUIRE(3 == aoc2017::day3(10)); REQUIRE(4 == aoc2017::day3(13)); REQUIRE(4 == aoc2017::day3(25)); REQUIRE(430 == aoc2017::day3(312051)); REQUIRE(312453 == aoc2017::day3part2(312051)); } TEST_CASE("High-Entropy Passphrases", "[2017]") { line_view lv = load_file("../src/2017/day4/input"); auto p = aoc2017::day4(lv); REQUIRE(386 == p.first); REQUIRE(208 == p.second); } TEST_CASE("A Maze of Twisty Trampolines, All Alike", "[2017]") { line_view lv = load_file("../src/2017/day5/input"); // line_view lv = load_file("../src/2017/day5/input0"); REQUIRE(360603 == aoc2017::day5(lv)); } TEST_CASE("Memory Reallocation", "[2017]") { line_view lv = load_file("../src/2017/day6/input"); // auto p = aoc2017::day6("0 2 7 0\n"); // REQUIRE(5 == p.first); // REQUIRE(4 == p.second); auto p = aoc2017::day6(lv); REQUIRE(6681 == p.first); REQUIRE(2392 == p.second); } TEST_CASE("Recursive Circus", "[2017]") { // line_view lv = load_file("../src/2017/day7/input0"); line_view lv = load_file("../src/2017/day7/input"); char x[10] = {0}; aoc2017::day7(lv, x); // REQUIRE(strcmp(x, "tknk") == 0); REQUIRE(strcmp(x, "svugo") == 0); } TEST_CASE("I Heard You Like Registers", "[2017]") { line_view lv = load_file("../src/2017/day8/input"); auto p = aoc2017::day8(lv); REQUIRE(4567 == p.first); REQUIRE(5636 == p.second); } TEST_CASE("Stream Processing", "[2017]") { line_view lv = load_file("../src/2017/day9/input"); auto p = aoc2017::day9(lv); REQUIRE(7640 == p.first); REQUIRE(4368 == p.second); // const char* ps[] = {"{<{o\"i!a,<{i}", // "{{{<<<<>}}}", // "{{>},{<{!>}>}}", // "{{{},{},{{}}}}", // "{,,,}", // "{{},{},{},{}}", // "{{},{},{},{}}", // "{{},{},{},{}}"}; // for (auto& p : ps) { // auto x = aoc2017::day9(p); // printf("%s -> %d, %d\n", p, x.first, x.second); // } } TEST_CASE("Knot Hash", "[2017]") { line_view lv = load_file("../src/2017/day10/input"); auto p = aoc2017::day10(lv); REQUIRE(15990 == p.first); REQUIRE(0 == p.second); } TEST_CASE("Hex Ed", "[2017]") { line_view lv = load_file("../src/2017/day11/input"); auto p = aoc2017::day11(lv); REQUIRE(877 == p.first); REQUIRE(1622 == p.second); } TEST_CASE("Digital Plumber", "[2017]") { line_view lv = load_file("../src/2017/day12/input"); auto p = aoc2017::day12(lv); REQUIRE(239 == p.first); REQUIRE(215 == p.second); } TEST_CASE("Packet Scanners", "[2017]") { line_view lv = load_file("../src/2017/day13/input"); auto p = aoc2017::day13(lv); REQUIRE(2384 == p.first); REQUIRE(3921270 == p.second); } TEST_CASE("Disk Defragmentation", "[2017]") { line_view lv = load_file("../src/2017/day14/input"); auto p = aoc2017::day14(lv); REQUIRE(8106 == p.first); REQUIRE(1164 == p.second); } TEST_CASE("Dueling Generators", "[2017]") { line_view lv = load_file("../src/2017/day15/input"); auto p = aoc2017::day15(lv); REQUIRE(631 == p.first); REQUIRE(279 == p.second); } TEST_CASE("Permutation Promenade", "[2017]") { line_view lv = load_file("../src/2017/day16/input"); auto p = aoc2017::day16(lv); REQUIRE(0 == p.first); REQUIRE(0 == p.second); } TEST_CASE("Spinlock", "[2017]") { line_view lv = load_file("../src/2017/day17/input"); auto p = aoc2017::day17(lv); REQUIRE(808 == p.first); REQUIRE(0 == p.second); } TEST_CASE("Duet", "[2017]") { line_view lv = load_file("../src/2017/day18/input"); auto p = aoc2017::day18(lv); REQUIRE(3423 == p.first); REQUIRE(0 == p.second); } TEST_CASE("A Series of Tubes", "[2017]") { line_view lv = load_file("../src/2017/day19/input"); auto p = aoc2017::day19(lv); REQUIRE("PVBSCMEQHY" == p.first); REQUIRE(17736 == p.second); } TEST_CASE("Particle Swarm", "[2017]") { line_view lv = load_file("../src/2017/day20/input"); auto p = aoc2017::day20(lv); REQUIRE(457 == p.first); REQUIRE(448 == p.second); } TEST_CASE("Fractal Art", "[2017]") { line_view lv = load_file("../src/2017/day21/input"); auto p = aoc2017::day21(lv); REQUIRE(142 == p.first); REQUIRE(1879071 == p.second); } TEST_CASE("Sporifica Virus", "[2017]") { line_view lv = load_file("../src/2017/day22/input"); auto p = aoc2017::day22(lv); REQUIRE(5246 == p.first); REQUIRE(0 == p.second); } TEST_CASE("", "[2017]") { line_view lv = load_file("../src/2017/day23/input"); auto p = aoc2017::day23(lv); REQUIRE(0 == p.first); REQUIRE(0 == p.second); } TEST_CASE("", "[2017]") { line_view lv = load_file("../src/2017/day24/input"); auto p = aoc2017::day24(lv); REQUIRE(0 == p.first); REQUIRE(0 == p.second); } TEST_CASE("", "[2017]") { line_view lv = load_file("../src/2017/day25/input"); auto p = aoc2017::day25(lv); REQUIRE(0 == p.first); REQUIRE(0 == p.second); }