aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2021-05-29 13:23:20 +0200
committerJan Krňávek <Jan.Krnavek@gmail.com>2021-05-29 13:23:20 +0200
commit12a85fe13e8e1d6265ac84218746f29d7e58b46e (patch)
tree1fd67b4ddb217770786dc535b99e288714f841da
parent48eb5f9ee75913c67bb8be21842a730372ecaa1a (diff)
downloadperlweeklychallenge-club-12a85fe13e8e1d6265ac84218746f29d7e58b46e.tar.gz
perlweeklychallenge-club-12a85fe13e8e1d6265ac84218746f29d7e58b46e.tar.bz2
perlweeklychallenge-club-12a85fe13e8e1d6265ac84218746f29d7e58b46e.zip
solutions week 114
-rw-r--r--challenge-114/wambash/raku/ch-1.raku22
-rw-r--r--challenge-114/wambash/raku/ch-2.raku26
2 files changed, 48 insertions, 0 deletions
diff --git a/challenge-114/wambash/raku/ch-1.raku b/challenge-114/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..ede878cf08
--- /dev/null
+++ b/challenge-114/wambash/raku/ch-1.raku
@@ -0,0 +1,22 @@
+#!/usr/bin/env raku
+
+sub next-palindrom-number ($n) {
+ my $chars = $n.chars/2;
+ $n
+ andthen .substr(0,$chars.ceiling)
+ andthen $_,$_+1
+ andthen .map: { $_ ~ .substr(0,$chars.floor).flip }\
+ andthen .first: {$_ > $n}
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is next-palindrom-number(1200), 1221;
+ is next-palindrom-number(1234), 1331;
+ is next-palindrom-number(999), 1001;
+ done-testing;
+}
+
+multi MAIN ($n) {
+ say next-palindrom-number $n
+}
diff --git a/challenge-114/wambash/raku/ch-2.raku b/challenge-114/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..bcfe5026da
--- /dev/null
+++ b/challenge-114/wambash/raku/ch-2.raku
@@ -0,0 +1,26 @@
+#!/usr/bin/env raku
+sub ones-in-binary ($n) {
+ $n.base(2).comb.sum
+}
+
+sub higher-integer-set-bits ( $n ) {
+ (1,2,4 ...*)
+ andthen .first: { $n !%% (2 * $_ ) }\
+ andthen $n + $_
+ andthen $_ + 2**(ones-in-binary($n)- ones-in-binary($_)) - 1
+}
+
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is higher-integer-set-bits(3),5;
+ is higher-integer-set-bits(12),17;
+ is higher-integer-set-bits(:2('101')),:2('110');
+ is higher-integer-set-bits(:2('101_111')), :2('110_111');
+ is higher-integer-set-bits(:2('11_111_111')),:2('101_111_111');
+ done-testing;
+}
+
+multi MAIN ( $n ) {
+ say higher-integer-set-bits $n
+}