diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2021-05-29 13:23:20 +0200 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2021-05-29 13:23:20 +0200 |
| commit | 12a85fe13e8e1d6265ac84218746f29d7e58b46e (patch) | |
| tree | 1fd67b4ddb217770786dc535b99e288714f841da | |
| parent | 48eb5f9ee75913c67bb8be21842a730372ecaa1a (diff) | |
| download | perlweeklychallenge-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.raku | 22 | ||||
| -rw-r--r-- | challenge-114/wambash/raku/ch-2.raku | 26 |
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 +} |
