aboutsummaryrefslogtreecommitdiff
path: root/src/day14.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/day14.cpp')
-rw-r--r--src/day14.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/src/day14.cpp b/src/day14.cpp
index 2b7a5b8..8816ce1 100644
--- a/src/day14.cpp
+++ b/src/day14.cpp
@@ -21,10 +21,8 @@ read_file(string_view filename)
21} 21}
22 22
23void 23void
24part1() 24part1(const vector<string>& lines)
25{ 25{
26 const auto lines = read_file("data/day14.txt");
27
28 auto start = chrono::steady_clock::now(); 26 auto start = chrono::steady_clock::now();
29 27
30 size_t sum = 0; 28 size_t sum = 0;
@@ -182,10 +180,9 @@ tilt_east(vector<string>& lines)
182void 180void
183tilt(vector<string>& lines) 181tilt(vector<string>& lines)
184{ 182{
185 tilt_north(lines); 183 for ( auto tilt: { tilt_north, tilt_west, tilt_south, tilt_east } ) {
186 tilt_west(lines); 184 tilt(lines);
187 tilt_south(lines); 185 }
188 tilt_east(lines);
189} 186}
190 187
191size_t 188size_t
@@ -201,16 +198,14 @@ calc(const vector<string>& lines)
201} 198}
202 199
203void 200void
204part2() 201part2(vector<string> lines)
205{ 202{
206 auto lines = read_file("data/day14.txt");
207
208 auto start = chrono::steady_clock::now(); 203 auto start = chrono::steady_clock::now();
209 map<vector<string>, long> cache; 204 map<vector<string>, long> cache;
210 205
211 const long dest = 1'000'000'000; 206 const long dest = 1'000'000'000;
212 207
213 for ( long index = 0; true; ++index ) { 208 for ( long index = 0;; ++index ) {
214 auto iter = cache.find(lines); 209 auto iter = cache.find(lines);
215 if ( iter != cache.end() ) { 210 if ( iter != cache.end() ) {
216 auto offset = iter->second; 211 auto offset = iter->second;
@@ -238,6 +233,7 @@ part2()
238int 233int
239main() 234main()
240{ 235{
241 part1(); 236 const auto lines = read_file("data/day14.txt");
242 part2(); 237 part1(lines);
238 part2(lines);
243} 239}