diff --git a/cpp/scrabble-score/scrabble_score.cpp b/cpp/scrabble-score/scrabble_score.cpp new file mode 100644 index 0000000..9808e73 --- /dev/null +++ b/cpp/scrabble-score/scrabble_score.cpp @@ -0,0 +1,34 @@ +#include "scrabble_score.h" + +#include +#include + + +namespace scrabble_score { + +using namespace std; + +namespace { + +const unordered_map scores_map = { + {'A', 1}, {'E', 1}, {'I', 1}, {'O', 1}, {'U', 1}, + {'L', 1}, {'N', 1}, {'R', 1}, {'S', 1}, {'T', 1}, + {'D', 2}, {'G', 2}, + {'B', 3}, {'C', 3}, {'M', 3}, {'P', 3}, + {'F', 4}, {'H', 4}, {'V', 4}, {'W', 4}, {'Y', 4}, + {'K', 5}, + {'J', 8}, {'X', 8}, + {'Q', 10}, {'Z', 10} + }; +} + +int score(const string &input) +{ + return accumulate(input.cbegin(), input.cend(), 0, + [](int acc, char ch) { + + return acc + scores_map.at(toupper(ch)); + }); +}; + +} diff --git a/cpp/scrabble-score/scrabble_score.h b/cpp/scrabble-score/scrabble_score.h new file mode 100644 index 0000000..d8af803 --- /dev/null +++ b/cpp/scrabble-score/scrabble_score.h @@ -0,0 +1,12 @@ +#pragma once + +#define EXERCISM_RUN_ALL_TESTS + +#include + +namespace scrabble_score { + +int score(const std::string &input); + +} +