From e9017140374dd3e286442b1860eb1f7220ac153a Mon Sep 17 00:00:00 2001 From: Mark A Date: Mon, 24 May 2021 07:12:34 -0600 Subject: Challenge 114 Solutions (Raku) --- challenge-114/mark-anderson/raku/ch-2.raku | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-114/mark-anderson/raku/ch-2.raku b/challenge-114/mark-anderson/raku/ch-2.raku index 5560624c9c..97cf9bea64 100644 --- a/challenge-114/mark-anderson/raku/ch-2.raku +++ b/challenge-114/mark-anderson/raku/ch-2.raku @@ -1,6 +1,6 @@ #!/usr/bin/env raku -# my translation of https://www.slideshare.net/gkumar007/bits-next-higher-presentation +# translation of https://www.slideshare.net/gkumar007/bits-next-higher-presentation # (slide 9) use Test; -- cgit From f532137a6e3f28608042a955d678007e73c994cb Mon Sep 17 00:00:00 2001 From: Mark A Date: Mon, 24 May 2021 08:22:38 -0600 Subject: Challenge 114 Solutions (Raku) --- challenge-114/mark-anderson/raku/ch-2.raku | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 challenge-114/mark-anderson/raku/ch-2.raku diff --git a/challenge-114/mark-anderson/raku/ch-2.raku b/challenge-114/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..97cf9bea64 --- /dev/null +++ b/challenge-114/mark-anderson/raku/ch-2.raku @@ -0,0 +1,30 @@ +#!/usr/bin/env raku + +# translation of https://www.slideshare.net/gkumar007/bits-next-higher-presentation +# (slide 9) + +use Test; +plan 9; + +is next-set-bits(3), 5; +is next-set-bits(6), 9; +is next-set-bits(11), 13; +is next-set-bits(23), 27; +is next-set-bits(24), 33; +is next-set-bits(44), 49; +is next-set-bits(46), 51; +is next-set-bits(240), 263; +is next-set-bits(2³²), 2³³; + +sub next-set-bits($N) +{ + my $bits = 0 ~ $N.base(2); + + my $m = $bits ~~ / $ = <[01]>* 0 $ = 1+ $ = 0* /; + + my @ones = $m.comb andthen .shift; + my @bits = @ones andthen .append($m.comb); + @bits .= rotate(@ones); + + $m ~ 10 ~ @bits.join andthen .parse-base(2); +} -- cgit