From 97c0e43874f39a1f964d3103d140ca0024c941a7 Mon Sep 17 00:00:00 2001 From: Bart Moyaers Date: Mon, 9 Dec 2019 11:49:52 +0100 Subject: [PATCH] more katas --- Array Leaders (Array Series #3)/main.cpp | 25 +++++++++++ Counting Duplicates/main.cpp | 42 +++++++++++++++++++ .../main.cpp | 22 ++++++++++ Two Sum/main.cpp | 16 +++++++ 4 files changed, 105 insertions(+) create mode 100644 Array Leaders (Array Series #3)/main.cpp create mode 100644 Counting Duplicates/main.cpp create mode 100644 Product Of Maximums Of Array (Array Series #2)/main.cpp create mode 100644 Two Sum/main.cpp diff --git a/Array Leaders (Array Series #3)/main.cpp b/Array Leaders (Array Series #3)/main.cpp new file mode 100644 index 0000000..e0a16b1 --- /dev/null +++ b/Array Leaders (Array Series #3)/main.cpp @@ -0,0 +1,25 @@ +#include +#include + +using namespace std; + +vector arrayLeaders(const vector& numbers) +{ + std::vector result; + int sum = 0; + for(auto ptr = numbers.end()-1; ptr >= numbers.begin(); ptr--){ + if(*ptr > sum) + result.insert(result.begin(), *ptr); + sum += *ptr; + } + return result; +} + +int main(){ + std::vector temp; + std::vector input = {17,5,3,4}; + temp = arrayLeaders(input); + for(auto el: temp){ + std::cout << el; + } +} \ No newline at end of file diff --git a/Counting Duplicates/main.cpp b/Counting Duplicates/main.cpp new file mode 100644 index 0000000..8b099d2 --- /dev/null +++ b/Counting Duplicates/main.cpp @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include + +size_t duplicateCount(const std::string& in); // helper for tests + +std::string toLower(const char* input){ + std::string temp = input; + std::transform(temp.begin(), temp.end(), temp.begin(), ::tolower); + return temp; +} + +size_t duplicateCount(const char* in) +{ + // Convert to lower chars + std::string input = toLower(in); + + // Start counting for every char + std::map my_map; + for(auto character: input){ + auto it = my_map.find(character); + if(it != my_map.end()){ + it->second += 1; + } else { + my_map[character] = 1; + } + } + + // Count how often we have a value higher than 1 + int count = 0; + for(auto it: my_map){ + if(it.second > 1) + count++; + } + return count; +} + +int main(){ + std::cout << duplicateCount("TESTtest"); +} \ No newline at end of file diff --git a/Product Of Maximums Of Array (Array Series #2)/main.cpp b/Product Of Maximums Of Array (Array Series #2)/main.cpp new file mode 100644 index 0000000..6c350b5 --- /dev/null +++ b/Product Of Maximums Of Array (Array Series #2)/main.cpp @@ -0,0 +1,22 @@ +#include +#include +#include + +using namespace std; + +int maxProduct (vectornumbers , int sub_size) +{ + // Sort numbers + std::sort(numbers.begin(), numbers.end()); + int result = 1; + // Loop over last sub_size elements + for(auto ptr = numbers.end()-1; ptr >= numbers.end() - sub_size; ptr--){ + result *= *ptr; + } + return result; +} + +int main(){ + std::vector numbers = {1,2,3,4,5}; + std::cout << maxProduct(numbers, 3); +} \ No newline at end of file diff --git a/Two Sum/main.cpp b/Two Sum/main.cpp new file mode 100644 index 0000000..245ed81 --- /dev/null +++ b/Two Sum/main.cpp @@ -0,0 +1,16 @@ +#include +#include + +std::pair two_sum(const std::vector& numbers, int target) { + for(int i = 0; i