From 6f96b2014b053a2e6e5a37464ca6fc578607fda7 Mon Sep 17 00:00:00 2001 From: jacopograndi Date: Thu, 6 Jan 2022 18:44:53 +0100 Subject: rm --- day04/day04.cpp | 134 -------------------------------------------------------- 1 file changed, 134 deletions(-) delete mode 100644 day04/day04.cpp (limited to 'day04/day04.cpp') diff --git a/day04/day04.cpp b/day04/day04.cpp deleted file mode 100644 index 7736eff..0000000 --- a/day04/day04.cpp +++ /dev/null @@ -1,134 +0,0 @@ -#include -#include -#include - -void split (std::vector &vec, std::string str, std::string del) { - auto token = str.find(del); - if (token != std::string::npos) { - vec.push_back(str.substr(0, token)); - split(vec, str.substr(token+del.size()), del); - } else { vec.push_back(str); } -} - -class Board { - public: - Board(std::string repr) { - std::vector lines; - split(lines, repr, "\n"); - for (auto line : lines) { - std::vector strcells; - split(strcells, line, " "); - size = 0; - for (auto strcell : strcells) { - if (strcell.size() == 0) continue; - cells.push_back(std::stoi(strcell)); - state.push_back(0); - size++; - } - } - - } - - int size; - std::vector cells; - std::vector state; - - void mark (int ex) { - for (int y=0; y extract; - auto token = raw.find("\n"); - if (token != std::string::npos) { - std::string ex = raw.substr(0, token); - std::vector vec; - split(vec, ex, ","); - for (auto v : vec) { extract.push_back(std::stoi(v)); } - - raw = raw.substr(token+2); - if (raw[raw.size()-1] == '\n') raw = raw.substr(0, raw.size()-1); - } else return 1; - - std::vector boards; - - std::vector str_boards; - split(str_boards, raw, "\n\n"); - for (auto s : str_boards) { - boards.emplace_back(s); - } - - bool flag = false; - std::vector filtered = boards; - for (int ex : extract) { - std::cout << ex << " " << filtered.size() << std::endl; - std::vector next; - int size = filtered.size(), seen = 0;; - for (auto& board : filtered) { - board.mark(ex); - if (board.win() && filtered.size() != 1) { - if (!flag) { - std::cout << "first winner product: " << ex * board.score() << ", " - << "ex: " << ex << ", score: " << board.score() << std::endl; - flag = true; - } - } else { - next.push_back(board); - } - } - if (next.size() == 1 && next[0].win()) { - int score = next[0].score(); - std::cout << "last winner product: " << ex * score << ", " - << "ex: " << ex << ", score: " << score << std::endl; - break; - } - filtered = next; - } - - return 0; -} -- cgit v1.2.3-54-g00ecf