From d61d35a6f11e83deba64e6a7008e0432962aacd6 Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sun, 5 Dec 2021 16:12:14 -0500 Subject: Solutions and blog for Challenge 141. --- challenge-141/adam-russell/blog.txt | 1 + challenge-141/adam-russell/blog1.txt | 0 challenge-141/adam-russell/cxx/ch-2.cxx | 45 +++++++++++++++++++++++++++----- challenge-141/adam-russell/prolog/ch-1.p | 0 challenge-141/adam-russell/prolog/ch-2.p | 0 5 files changed, 40 insertions(+), 6 deletions(-) delete mode 100644 challenge-141/adam-russell/blog1.txt delete mode 100644 challenge-141/adam-russell/prolog/ch-1.p delete mode 100644 challenge-141/adam-russell/prolog/ch-2.p diff --git a/challenge-141/adam-russell/blog.txt b/challenge-141/adam-russell/blog.txt index e69de29bb2..f6cb97edcd 100644 --- a/challenge-141/adam-russell/blog.txt +++ b/challenge-141/adam-russell/blog.txt @@ -0,0 +1 @@ +http://www.rabbitfarm.com/cgi-bin/blosxom/2021/12/05/perl diff --git a/challenge-141/adam-russell/blog1.txt b/challenge-141/adam-russell/blog1.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/challenge-141/adam-russell/cxx/ch-2.cxx b/challenge-141/adam-russell/cxx/ch-2.cxx index 02b29df17d..e708e8c91a 100644 --- a/challenge-141/adam-russell/cxx/ch-2.cxx +++ b/challenge-141/adam-russell/cxx/ch-2.cxx @@ -1,3 +1,4 @@ +#include #include #include #include @@ -6,6 +7,7 @@ class LikeNumbers{ public: std::vector like_numbers(int, int); private: + int vector2int(std::vector); std::vector int2digits(int); }; @@ -16,19 +18,50 @@ std::vector LikeNumbers::int2digits(int i){ digits.push_back(digit); i = i / 10; }while(i != 0); - std::reverse(digits.begin(), digits.end()); return digits; } +int LikeNumbers::vector2int(std::vector v){ + int x = 1; + int r = 0; + for(int i: v){ + r = r + (i * x); + x = x * 10; + } + return r; +} + std::vector LikeNumbers::like_numbers(int i, int j){ std::vector digits = this->int2digits(i); - for(int digit : digits) - std::cout << digit << " "; - std::cout << std::endl; - return digits; + std::vector like; + int power_set_size = std::pow(2, digits.size()); + for(int k = 1; k < power_set_size - 1; k++){ + std::vector included_digits; + for(int l = 0; l < digits.size(); l++){ + if( k >> l & 1) + included_digits.push_back(digits.at(l)); + } + int number = this->vector2int(included_digits); + if(number % j == 0) + like.push_back(number); + } + std::sort(like.begin(), like.end()); + return like; } int main(int argc, char** argv){ LikeNumbers ln; - ln.like_numbers(1234, 2); + std::vector like; + like = ln.like_numbers(1234, 2); + std::cout << like.size() << ": "; + for(int i : like){ + std::cout << i << " "; + } + std::cout << std::endl; + like = ln.like_numbers(768, 4); + std::cout << like.size() << ": "; + for(int i : like){ + std::cout << i << " "; + } + std::cout << std::endl; } diff --git a/challenge-141/adam-russell/prolog/ch-1.p b/challenge-141/adam-russell/prolog/ch-1.p deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/challenge-141/adam-russell/prolog/ch-2.p b/challenge-141/adam-russell/prolog/ch-2.p deleted file mode 100644 index e69de29bb2..0000000000 -- cgit