From f76690956c4b5e2aa9ad6016d6223e765663e603 Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Wed, 22 Dec 2021 16:46:16 +0100 Subject: solutions week 144 --- challenge-144/wambash/raku/ch-1.raku | 27 +++++++++++++++++++++++++++ challenge-144/wambash/raku/ch-2.raku | 28 ++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 challenge-144/wambash/raku/ch-1.raku create mode 100644 challenge-144/wambash/raku/ch-2.raku 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 +} -- cgit