Created the advent of code day 1 challenge
This commit is contained in:
parent
10fd196521
commit
3179cbda8b
52
aoc/01.cpp
Normal file
52
aoc/01.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <fstream>
|
||||
#include <map>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// Advent of Code 2023, Day 1
|
||||
|
||||
int main() {
|
||||
ifstream input("input.txt");
|
||||
map<string, string> numbers = {
|
||||
{"1", "one"}, {"2", "two"}, {"3", "three"},
|
||||
{"4", "four"}, {"5", "five"}, {"6", "six"},
|
||||
{"7", "seven"}, {"8", "eight"}, {"9", "nine"}
|
||||
};
|
||||
|
||||
int calibrationValue = 0;
|
||||
|
||||
for (string line; getline(input, line);) {
|
||||
string current_str;
|
||||
for (char current : line) {
|
||||
current_str.push_back(current);
|
||||
|
||||
for (auto item : numbers) {
|
||||
size_t index = current_str.find(item.second);
|
||||
|
||||
while(index != std::string::npos){
|
||||
current_str.replace(index, item.second.length(), item.first);
|
||||
index = current_str.find(item.second);
|
||||
}
|
||||
}
|
||||
}
|
||||
line = current_str;
|
||||
|
||||
vector<char> digits;
|
||||
for (char current: line) {
|
||||
if (isdigit(current)) digits.push_back(current);
|
||||
}
|
||||
|
||||
string calibrationLine;
|
||||
calibrationLine.push_back(digits[0]);
|
||||
calibrationLine.push_back(digits.size() > 1 ? digits[digits.size() - 1] : digits[0]);
|
||||
|
||||
cout << "Calibration Value (" << line << "): " << calibrationLine << "\n";
|
||||
calibrationValue += stoi(calibrationLine);
|
||||
}
|
||||
|
||||
cout << "Calibration Value Sum: " << calibrationValue;
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user