aboutsummaryrefslogtreecommitdiff
path: root/test/test_2018.cpp
blob: 320ada9edb49a4495f486144e14067b27e4302b9 (plain)
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
#include "2018/day1/aoc.h"
#include "2018/day2/aoc.h"
#include "2018/day3/aoc.h"
#include "2018/day4/aoc.h"
#include "2018/day5/aoc.h"
#include "2018/day6/aoc.h"
#include "2018/day7/aoc.h"
#include "2018/day8/aoc.h"
#include "2018/day9/aoc.h"
#include "catch.hpp"
#include <stdio.h>
#include <string.h>

TEST_CASE("Chronal Calibration", "[2018]") {
  line_view lv = load_file("../src/2018/day1/input");
  REQUIRE(522 == aoc2018::day1(lv));
  REQUIRE(73364 == aoc2018::day1part2(lv));
  // REQUIRE(10 == aoc2018::day1part2("+3\n+3\n+4\n-2\n-4"));
  // REQUIRE(5 == aoc2018::day1part2("-6\n+3\n+8\n+5\n-6"));
  // REQUIRE(14 == aoc2018::day1part2("+7\n+7\n-2\n-7\n-4"));
}

TEST_CASE("Inventory Management System", "[2018]") {
  line_view lv = load_file("../src/2018/day2/input");
  char common[26] = {0};
  auto p = aoc2018::day2(lv, common);
  REQUIRE(6642 == p);
  REQUIRE(strcmp("cvqlbidheyujgtrswxmckqnap", common) == 0);
}

TEST_CASE("No Matter How You Slice It", "[2018]") {
  line_view lv = load_file("../src/2018/day3/input");
  auto p = aoc2018::day3(lv, 1);
  REQUIRE(109785 == p.first);
  REQUIRE(504 == p.second);
}

TEST_CASE("Repose Record", "[2018]") {
  line_view lv = load_file("../src/2018/day4/input");
  auto p = aoc2018::day4(lv);
  REQUIRE(14346 == p.first);
  REQUIRE(5705 == p.second);
}

TEST_CASE("Alchemical Reduction", "[2018]") {
  line_view lv = load_file("../src/2018/day5/input");
  auto p = aoc2018::day5(lv);
  REQUIRE(11042 == p.first);
  REQUIRE(6872 == p.second);
}

TEST_CASE("Chronal Coordinates", "[2018]") {
  line_view lv = load_file("../src/2018/day6/input");
  auto p = aoc2018::day6(lv, 10000);
  REQUIRE(3260 == p.first);
  REQUIRE(42535 == p.second);
}

TEST_CASE("The Sum of Its Parts", "[2018]") {
  // line_view lv = load_file("../src/2018/day7/input0");
  line_view lv = load_file("../src/2018/day7/input");
  char sequence[100] = {0};
  REQUIRE(941 == aoc2018::day7(lv, sequence));
  REQUIRE(strcmp("BGKDMJCNEQRSTUZWHYLPAFIVXO", sequence) == 0);
}

TEST_CASE("Memory Maneuver", "[2018]") {
  line_view lv = load_file("../src/2018/day8/input");
  auto p = aoc2018::day8(lv);
  REQUIRE(36891 == p.first);
  REQUIRE(20083 == p.second);
  // auto p = aoc2018::day8("2 3 0 3 10 11 12 1 1 0 1 99 2 1 1 2");
  // REQUIRE(138 == p.first);
}

TEST_CASE("Marble Mania", "[2018]") {
  REQUIRE(425688 == aoc2018::day9(411, 71170));
  REQUIRE(3526561003 == aoc2018::day9(411, 7117000));
}