Its cute how the c++ version of day 5 is shorter

This commit is contained in:
Daniel Cortés
2020-12-05 06:43:15 -03:00
parent 00ab24ff28
commit 01d1f9e7cd
2 changed files with 47 additions and 4 deletions

View File

@@ -0,0 +1,44 @@
#include <algorithm>
#include <vector>
#include <set>
#include <string>
#include <fstream>
#include <iostream>
std::vector<std::string> read_input_file() {
std::ifstream file("input");
std::vector<std::string> data;
std::string line;
while(std::getline(file, line))
data.push_back(line);
return data;
}
int parse_id(std::string ticket) {
std::replace(ticket.begin(), ticket.end(), 'F', '0');
std::replace(ticket.begin(), ticket.end(), 'L', '0');
std::replace(ticket.begin(), ticket.end(), 'B', '1');
std::replace(ticket.begin(), ticket.end(), 'R', '1');
return stoi(ticket, nullptr, 2);
}
int solve_a(const std::set<int> &ids) { return *ids.rbegin(); }
int solve_b(const std::set<int> &ids) {
for(int id = 0; id < 1024; id++)
if(!ids.contains(id) && ids.contains(id+1) && ids.contains(id-1))
return id;
return 0;
}
int main() {
std::set<int> ids;
for(auto &ticket: read_input_file()) ids.insert(parse_id(ticket));
std::cout << solve_a(ids) << " " << solve_b(ids) << std::endl;
return 0;
}