From d28cd15ecccea5e123905de524858dea18008ba4 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Mon, 11 Nov 2024 18:16:20 +0100 Subject: aoc 2015, day01 --- 2015/src/day01.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ makefile | 7 ++++++- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 2015/src/day01.cpp diff --git a/2015/src/day01.cpp b/2015/src/day01.cpp new file mode 100644 index 0000000..5d6d482 --- /dev/null +++ b/2015/src/day01.cpp @@ -0,0 +1,54 @@ +#include +#include +#include + +using namespace std; + +string +read_file(string_view filename) +{ + fstream input{ filename }; + return { istreambuf_iterator{ input }, {} }; +} + +void +part1(string_view puzzle) +{ + int floor = 0; + for (const auto& chr : puzzle) { + if (chr == '(') { + ++floor; + } + else if (chr == ')') { + --floor; + } + } + cout << floor << endl; +} + +void +part2(string_view puzzle) +{ + int floor = 0; + for (string_view::size_type pos = 0; pos != puzzle.length(); ++pos) { + const auto chr = puzzle[pos]; + if (chr == '(') { + ++floor; + } + else if (chr == ')') { + --floor; + } + if (floor == -1) { + cout << pos+1 << endl; + break; + } + } +} + +int +main() +{ + auto puzzle = read_file("data/day01.txt"); + part1(puzzle); + part2(puzzle); +} diff --git a/makefile b/makefile index 494ced4..d88478f 100644 --- a/makefile +++ b/makefile @@ -1,12 +1,17 @@ include config.mk -all: $(patsubst 2020/src/%.cpp,2020/bin/%,$(wildcard 2020/src/*.cpp)) \ +all: $(patsubst 2015/src/%.cpp,2015/bin/%,$(wildcard 2015/src/*.cpp)) \ + $(patsubst 2020/src/%.cpp,2020/bin/%,$(wildcard 2020/src/*.cpp)) \ $(patsubst 2022/src/%.cpp,2022/bin/%,$(wildcard 2022/src/*.cpp)) \ $(patsubst 2023/src/%.cpp,2023/bin/%,$(wildcard 2023/src/*.cpp)) %/bin: mkdir -p $@ +# 2015 +2015/bin/%: 2015/src/%.cpp | 2015/bin + c++ $(CPPFLAGS) $^ -o $@ + # 2020 2020/bin/%: 2020/src/%.cpp | 2020/bin c++ $(CPPFLAGS) $^ -o $@ -- cgit v1.3