diff options
| -rw-r--r-- | challenge-144/wambash/raku/ch-1.raku | 27 | ||||
| -rw-r--r-- | challenge-144/wambash/raku/ch-2.raku | 28 |
2 files changed, 55 insertions, 0 deletions
diff --git a/challenge-144/wambash/raku/ch-1.raku b/challenge-144/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..8fb46487c9 --- /dev/null +++ b/challenge-144/wambash/raku/ch-1.raku @@ -0,0 +1,27 @@ +#!/usr/bin/env raku + +constant @primes = (2 ... *).grep: *.is-prime; +constant @semiprimes = ( + @primes + andthen [\,] $_ + andthen .map: {$_ X* .tail}\ +); + +sub semiprime ($n) { + @semiprimes + andthen .map: { .toggle: * ≤ $n }\ + andthen .toggle: * !~~ Empty + andthen .map: |* +} + +multi MAIN (Bool :test($)!) { + use Test; + is-deeply semiprime(100).Set, set(4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95); + done-testing; +} + +multi MAIN ($n = 100) { + semiprime $n + andthen .batch: 20 + andthen .map: *.fmt('%5d').put +} diff --git a/challenge-144/wambash/raku/ch-2.raku b/challenge-144/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..6c0b6602eb --- /dev/null +++ b/challenge-144/wambash/raku/ch-2.raku @@ -0,0 +1,28 @@ +#!/usr/bin/env raku + +sub ulam-next (+@u) { + @u + andthen .tail ^.. * + andthen .first: { + $_ == @u.combinations(2).map(*.sum).one + } +} + +sub ulam-seq (+@u) { + @u + andthen |$_, &ulam-next ... * +} + +multi MAIN (Bool :test($)!) { + use Test; + is ulam-next(1,2,3,4),6; + is ulam-next(1,2,3,4,6,8),11; + is ulam-seq(1,2).head(10),(1, 2, 3, 4, 6, 8, 11, 13, 16, 18); + is ulam-seq(2,3).head(10),(2, 3, 5, 7, 8, 9, 13, 14, 18, 19); + is ulam-seq(2,5).head(10),(2, 5, 7, 9, 11, 12, 13, 15, 19, 23); + done-testing; +} + +multi MAIN (*@u, :$n=10) { + put ulam-seq(@u).head: $n +} |
