Day 6 Question 1

This commit is contained in:
2025-12-07 17:29:21 +02:00
parent 3051ce7f47
commit 0cd5ec7826
3 changed files with 70 additions and 0 deletions

61
Day6/Question1/main.cpp Normal file
View File

@@ -0,0 +1,61 @@
#include <algorithm>
#include <cstdint>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
int main() {
std::fstream input("input");
std::string currentLine = "", lineOfOperations = "";
std::vector<std::string> lines{};
std::vector<uint64_t> results{};
std::vector<uint64_t> startPositionOfOperations{};
while (std::getline(input, currentLine, '\n')) {
lines.push_back(currentLine);
}
// Just removing the operations for a for loop below
lineOfOperations = lines.back();
lines.pop_back();
// Since only 3 possibilities are '+', '*', and ' '
uint64_t count = 0;
for (char character : lineOfOperations) {
if (character != ' ') {
startPositionOfOperations.push_back(count);
}
count++;
}
// Now we have each coloums length :^)
count = 0;
uint64_t total = 0;
for (uint64_t PositionOfAnOperation : startPositionOfOperations) {
bool isAddition = lineOfOperations[PositionOfAnOperation] == '+';
uint64_t thisOperationsResult = 0, number = 0,
NextPositionOfAnOperation = startPositionOfOperations[std::min(
++count, startPositionOfOperations.size())];
for (std::string line : lines) {
number = std::stoull(
line.substr(PositionOfAnOperation,
PositionOfAnOperation - NextPositionOfAnOperation));
if (isAddition) {
thisOperationsResult += number;
continue;
}
if (thisOperationsResult == 0) {
thisOperationsResult = number;
continue;
}
thisOperationsResult *= number;
}
total += thisOperationsResult;
}
std::cout << total << std::endl;
return 0;
}