diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-05-29 20:40:14 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-29 20:40:14 +0100 |
| commit | 406cdf607445ad14c271e8299545a59acd1b358f (patch) | |
| tree | b4add6c53e9ae044e6a1695d0e82b9be2bfff3c2 | |
| parent | 7b3e383f07a947922c8ff346eb3987e45e3b6abc (diff) | |
| parent | 12a85fe13e8e1d6265ac84218746f29d7e58b46e (diff) | |
| download | perlweeklychallenge-club-406cdf607445ad14c271e8299545a59acd1b358f.tar.gz perlweeklychallenge-club-406cdf607445ad14c271e8299545a59acd1b358f.tar.bz2 perlweeklychallenge-club-406cdf607445ad14c271e8299545a59acd1b358f.zip | |
Merge pull request #4157 from wambash/challenge-week-114
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 +} |
