From e857f3ac76929435f4ee0bf07acb68b750751fae Mon Sep 17 00:00:00 2001 From: Kyle Shores Date: Wed, 25 Dec 2024 12:47:10 -0600 Subject: [PATCH] day 25 part 1 --- 2024/src/day25.cpp | 54 ++++++++-------------------------------------- 1 file changed, 9 insertions(+), 45 deletions(-) diff --git a/2024/src/day25.cpp b/2024/src/day25.cpp index 176682b..4f2bb48 100644 --- a/2024/src/day25.cpp +++ b/2024/src/day25.cpp @@ -11,40 +11,11 @@ struct Data { std::vector> locks; }; -void sort_values(std::vector>& values, bool reverse = false) { - std::sort(values.begin(), values.end(), [&](const auto& a, const auto& b) { - for(int i = 0; i < a.size(); ++i) { - if (a[i] != b[i]) { - if (reverse) { - return a[i] > b[i]; - } - return a[i] < b[i]; - } - } - return false; - }); -} - int part1(const Data &data) { - auto keys = data.keys; - auto locks = data.locks; - sort_values(keys); - sort_values(locks); - for(auto& key : keys) { - std::cout << std::format("key: {} {} {} {} {}\n", key[0], key[1], key[2], key[3], key[4]); - } - std::cout << std::format("-----\n"); - for(auto& lock : locks) { - std::cout << std::format("lock: {} {} {} {} {}\n", lock[0], lock[1], lock[2], lock[3], lock[4]); - } - std::cout << std::format("-----\n"); - std::cout << std::format("Number of keys: {}\n", keys.size()); - std::cout << std::format("Number of locks: {}\n", locks.size()); - int sum = 0; - for(auto key: keys) { - for(auto lock: locks) { + for(auto key: data.keys) { + for(auto lock: data.locks) { bool valid = true; for(int i = 0; i < key.size(); ++i) { if (key[i] + lock[i] > 5) { @@ -53,15 +24,6 @@ int part1(const Data &data) } } if (valid) { - // std::cout << "key: "; - // for(int i = 0; i < key.size(); ++i) { - // std::cout << std::format("{} ", key[i]); - // } - // std::cout << "lock: "; - // for(int i = 0; i < lock.size(); ++i) { - // std::cout << std::format("{} ", lock[i]); - // } - // std::cout << " fit\n"; sum++; } } @@ -87,6 +49,7 @@ Data parse() bool locks = true; bool last_empty = true; std::vector count(5, 0); + int j = 0; while (std::getline(file, line)) { if (line.size() == 0) { @@ -105,16 +68,17 @@ Data parse() last_empty = false; continue; } - else if (line == "#####") { - last_empty = false; - continue; - } if (line == "....." && last_empty) { locks = false; last_empty = false; continue; } last_empty = false; + ++j; + if (j == 6) { + j = 0; + continue; + } for(int i = 0; i < line.size(); ++i) { count[i] += line[i] == '#'; } @@ -164,7 +128,7 @@ int main(int argc, char **argv) { Data data = parse(); - int answer1 = 0; + int answer1 = 2885; int answer2 = 0; auto first = part1(data);