diff options
| -rw-r--r-- | challenge-172/mark-anderson/raku/ch-1.raku | 2 | ||||
| -rw-r--r-- | challenge-172/mark-anderson/raku/ch-2.raku | 17 |
2 files changed, 10 insertions, 9 deletions
diff --git a/challenge-172/mark-anderson/raku/ch-1.raku b/challenge-172/mark-anderson/raku/ch-1.raku index 196e5d6a1b..6c34064f8b 100644 --- a/challenge-172/mark-anderson/raku/ch-1.raku +++ b/challenge-172/mark-anderson/raku/ch-1.raku @@ -12,5 +12,5 @@ is-deeply prime-partition(95, 8), ((2, 3, 5, 7, 11, 13, 17, 37), sub prime-partition($m, $n) { - (2,3,5,7...$m-2).grep(&is-prime).combinations($n).grep({ .sum == $m }) + (2,3,5,7...$m-2).grep(&is-prime).combinations($n).grep({ .sum == $m }) } diff --git a/challenge-172/mark-anderson/raku/ch-2.raku b/challenge-172/mark-anderson/raku/ch-2.raku index 7623904369..828ac0192d 100644 --- a/challenge-172/mark-anderson/raku/ch-2.raku +++ b/challenge-172/mark-anderson/raku/ch-2.raku @@ -12,13 +12,14 @@ is five-number-summary(7, 15, 36, 39, 40, 41), sub five-number-summary(+@a) { - @a .= sort; + @a .= sort; + my $q := quartile(); - return { - min => @a.head, - lower-q => quartile('lower'), + return { + min => @a.head, + lower-q => $q.head, median => median(@a), - upper-q => quartile('upper'), + upper-q => $q.tail, max => @a.tail } @@ -26,14 +27,14 @@ sub five-number-summary(+@a) { my $r = @a.elems div 2; @a.elems mod 2 ?? @a[$r] !! (.head.tail + .tail.head) / 2 - given @a.rotor($r).cache + given @a.rotor($r).cache } - sub quartile($s) + sub quartile { # method 1 from https://en.wikipedia.org/wiki/Quartile my $r = @a.elems div 2; my @t = @a.elems mod 2 ?? @a.rotor($r, 1, $r) !! @a.rotor($r); - $s eq 'lower' ?? median(@t.head) !! median(@t.tail) + median(@t.head), median(@t.tail) } } |
