aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Russell <ac.russell@live.com>2021-12-05 16:12:14 -0500
committerAdam Russell <ac.russell@live.com>2021-12-05 16:12:14 -0500
commitd61d35a6f11e83deba64e6a7008e0432962aacd6 (patch)
treeefad8b2ce7b817f2e919ad72bb0451a3f48e851f
parente4bf7d4e2d361e399ac30eb1d2f24fbb0f0ad0bb (diff)
downloadperlweeklychallenge-club-d61d35a6f11e83deba64e6a7008e0432962aacd6.tar.gz
perlweeklychallenge-club-d61d35a6f11e83deba64e6a7008e0432962aacd6.tar.bz2
perlweeklychallenge-club-d61d35a6f11e83deba64e6a7008e0432962aacd6.zip
Solutions and blog for Challenge 141.
-rw-r--r--challenge-141/adam-russell/blog.txt1
-rw-r--r--challenge-141/adam-russell/blog1.txt0
-rw-r--r--challenge-141/adam-russell/cxx/ch-2.cxx45
-rw-r--r--challenge-141/adam-russell/prolog/ch-1.p0
-rw-r--r--challenge-141/adam-russell/prolog/ch-2.p0
5 files changed, 40 insertions, 6 deletions
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
--- a/challenge-141/adam-russell/blog1.txt
+++ /dev/null
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<cmath>
#include<vector>
#include<iostream>
#include<algorithm>
@@ -6,6 +7,7 @@ class LikeNumbers{
public:
std::vector<int> like_numbers(int, int);
private:
+ int vector2int(std::vector<int>);
std::vector<int> int2digits(int);
};
@@ -16,19 +18,50 @@ std::vector<int> 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<int> v){
+ int x = 1;
+ int r = 0;
+ for(int i: v){
+ r = r + (i * x);
+ x = x * 10;
+ }
+ return r;
+}
+
std::vector<int> LikeNumbers::like_numbers(int i, int j){
std::vector<int> digits = this->int2digits(i);
- for(int digit : digits)
- std::cout << digit << " ";
- std::cout << std::endl;
- return digits;
+ std::vector<int> like;
+ int power_set_size = std::pow(2, digits.size());
+ for(int k = 1; k < power_set_size - 1; k++){
+ std::vector<int> 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<int> 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
--- a/challenge-141/adam-russell/prolog/ch-1.p
+++ /dev/null
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
--- a/challenge-141/adam-russell/prolog/ch-2.p
+++ /dev/null