diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-12-23 12:25:13 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-23 12:25:13 +0000 |
| commit | a042d193e61580e8bd4011d391ef13b398396597 (patch) | |
| tree | 2edbb9034c79255aad3ca350542ab623b89a17ef | |
| parent | 86ddf7b64e4859fc0b00eda0cb7cb0bdb62d12ad (diff) | |
| parent | f76690956c4b5e2aa9ad6016d6223e765663e603 (diff) | |
| download | perlweeklychallenge-club-a042d193e61580e8bd4011d391ef13b398396597.tar.gz perlweeklychallenge-club-a042d193e61580e8bd4011d391ef13b398396597.tar.bz2 perlweeklychallenge-club-a042d193e61580e8bd4011d391ef13b398396597.zip | |
Merge pull request #5402 from wambash/challenge-week-144
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 +} |
