diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2021-12-22 16:46:16 +0100 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2021-12-22 16:46:16 +0100 |
| commit | f76690956c4b5e2aa9ad6016d6223e765663e603 (patch) | |
| tree | 2edbb9034c79255aad3ca350542ab623b89a17ef | |
| parent | 86ddf7b64e4859fc0b00eda0cb7cb0bdb62d12ad (diff) | |
| download | perlweeklychallenge-club-f76690956c4b5e2aa9ad6016d6223e765663e603.tar.gz perlweeklychallenge-club-f76690956c4b5e2aa9ad6016d6223e765663e603.tar.bz2 perlweeklychallenge-club-f76690956c4b5e2aa9ad6016d6223e765663e603.zip | |
solutions week 144
| -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 +} |
