From e52031d3df9a0671ef6c9109708d5406fc9d73b7 Mon Sep 17 00:00:00 2001 From: rasmus Date: Tue, 18 Mar 2025 15:39:43 +0100 Subject: [PATCH] Initial implementation of calculation of the score --- rolls.txt | 2 +- rolls1.txt | 1 + src/main.cpp | 48 +++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 rolls1.txt diff --git a/rolls.txt b/rolls.txt index aadbdc8..2daa3f9 100644 --- a/rolls.txt +++ b/rolls.txt @@ -1 +1 @@ -2, 3, 5, 4, 9, 1, 2, 5, 3, 2, 4, 2, 3, 3, 4, 6, 10, 3, 2 +10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 diff --git a/rolls1.txt b/rolls1.txt new file mode 100644 index 0000000..3b81674 --- /dev/null +++ b/rolls1.txt @@ -0,0 +1 @@ +10, 3, 2, 2, 3, 5, 4, 9, 1, 2, 5, 3, 2, 4, 2, 3, 3, 4, 6 diff --git a/src/main.cpp b/src/main.cpp index c150522..1ea631c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,24 +4,58 @@ #include "../Include/FileHelper.h" #include "../Include/NumberHelper.h" +using namespace std; + int main(int argc, char *argv[]) { - if(argc < 2) { + if (argc < 2) { std::cerr << "Please provide a CSV formatted file."; return 0; } - if(!FileHelper::FileExists(argv[1])) { - std::cerr << "Filepath: " << argv[1] << " doesn't exist."; + if (!FileHelper::FileExists(argv[1])) { + cerr << "Filepath: " << argv[1] << " doesn't exist."; return 0; } - std::string file = FileReader::GetFile(argv[1]); + string file = FileReader::GetFile(argv[1]); - std::vector numbers = NumberHelper::GetNumbers(file); + vector rolls = NumberHelper::GetNumbers(file); - for(int i = 0; i < numbers.size(); i++) { - std::cout << numbers[i] << ' '; + + // Calculate score + int score = 0; + int frame = 0; + + while (true) { + if (rolls[frame] == 10) { + if (frame + 3 == rolls.size() && rolls[frame - 3] == 10) { + score += 10 + rolls[frame + 1] + rolls[frame + 2]; + break; + } + + score += 10 + rolls[frame + 1] + rolls[frame + 2]; + frame += 1; + continue; + } + + // Spare + if (rolls[frame] + rolls[frame + 1] == 10) { + score += 10 + rolls[frame + 2]; + frame += 2; + continue; + } + + // Open Frame + score += rolls[frame] + rolls[frame + 1]; + frame += 2; + + if (frame == rolls.size()) { + break; + } } + cout << "Score: " << score << std::endl; + + return 0; }