1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#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 "catch.hpp"
#include <stdio.h>
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<a>}",
// "{{{<<<<>}}}",
// "{{<!!!>>},{<{!>}>}}",
// "{{{},{},{{}}}}",
// "{<a>,<a>,<a>,<a>}",
// "{{<ab>},{<ab>},{<ab>},{<ab>}}",
// "{{<!!>},{<!!>},{<!!>},{<!!>}}",
// "{{<a!>},{<a!>},{<a!>},{<ab>}}"};
// for (auto& p : ps) {
// auto x = aoc2017::day9(p);
// printf("%s -> %d, %d\n", p, x.first, x.second);
// }
}
|