From ad1fb7cc136aac33cf54c1fdfe865fc3db06d29e Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 12 Mar 2023 20:43:33 +0100 Subject: solutions week 207 --- challenge-207/wambash/raku/ch-1.raku | 20 ++++++++++++++++++++ challenge-207/wambash/raku/ch-2.raku | 21 +++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 challenge-207/wambash/raku/ch-1.raku create mode 100644 challenge-207/wambash/raku/ch-2.raku diff --git a/challenge-207/wambash/raku/ch-1.raku b/challenge-207/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..a89cd67974 --- /dev/null +++ b/challenge-207/wambash/raku/ch-1.raku @@ -0,0 +1,20 @@ +#!/usr/bin/env raku + +my @*keyboard := ».comb; + +sub keyboard-word (+@words,:@keyboard=@*keyboard) { + my @keyboard-rows = @keyboard.map: { rx:i/^ @^row + $/ }; + my &keyboard-regex = rx/@keyboard-rows/; + @words.grep: *.contains: &keyboard-regex #or @keyboard-rows.any; +} + +multi MAIN (Bool :test($)!) { + use Test; + is-deeply keyboard-word(),; + is-deeply keyboard-word(), $(); + done-testing; +} + +multi MAIN (*@words,:$keyboard=@*keyboard) { + say keyboard-word @words, :$keyboard +} diff --git a/challenge-207/wambash/raku/ch-2.raku b/challenge-207/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..96556cb0fe --- /dev/null +++ b/challenge-207/wambash/raku/ch-2.raku @@ -0,0 +1,21 @@ +#!/usr/bin/env raku + +sub h-index ( +@citation ) { + @citation + andthen 0, |$_ + andthen .reduce: { $^count < $^n ?? $^count+1 !! last } +} + +multi MAIN (Bool :test($)!) { + use Test; + is h-index(10,8,5,4,3), 4; + is h-index(25,8,5,3,3), 3; + is h-index(10 xx 20), 10; + is h-index(9...1), 5; + is h-index(9,7,6,2,1), 3; + done-testing; +} + +multi MAIN ( *@citation ) { + say h-index @citation +} -- cgit