From ce2a306f1127ca23cba0c5553b32f11118dda096 Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sat, 5 Jun 2021 19:36:07 +0200 Subject: solutions week 115 --- challenge-115/wambash/raku/ch-1.raku | 30 ++++++++++++++++++++++++++++++ challenge-115/wambash/raku/ch-2.raku | 25 +++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 challenge-115/wambash/raku/ch-1.raku create mode 100644 challenge-115/wambash/raku/ch-2.raku diff --git a/challenge-115/wambash/raku/ch-1.raku b/challenge-115/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..0a0e1e3687 --- /dev/null +++ b/challenge-115/wambash/raku/ch-1.raku @@ -0,0 +1,30 @@ +#!/usr/bin/env raku + + +sub string-chain-iter (@a,@s) { + @a + andthen .map: { |$_ X, (@s.Bag ∖ $_).keys.grep: -> $x { $x.starts-with: .tail.comb.tail} }\ + andthen .map: *.Slip +} + +sub string-chain (+@s) { + my &iter = &string-chain-iter.assuming(*,@s); + [@s.head], *.&iter ... * + andthen .[@s.end] + andthen .first: { .cache; .head.starts-with: .tail.comb.tail } +} + + +multi MAIN (*@s) { + say +so string-chain @s +} + +multi MAIN (:test($)!) { + use Test; + is-deeply string-chain-iter(('abc',), ('dea','cd','cec')).any, ('abc','cd') & ('abc','cec'); + is-deeply string-chain-iter(('abd','dea',), ('dea','abd')), (('abd','dea'), ('dea','abd')); + is string-chain('abc', 'dea','cd','cec'),('abc','cec','cd','dea'); + is string-chain('abc', 'dea','cd',), ('abc','cd','dea'); + is string-chain('ade', 'fgh','cbd',), Nil; + done-testing; +} diff --git a/challenge-115/wambash/raku/ch-2.raku b/challenge-115/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..a2100bfcae --- /dev/null +++ b/challenge-115/wambash/raku/ch-2.raku @@ -0,0 +1,25 @@ +#!/usr/bin/env raku + + +sub largest-multiple (+@n) { + with @n.grep(* %% 2).min -> $min-even { + @n.Bag ∖ $min-even + andthen .kxxv.sort.reverse + andthen .join ~ $min-even + } +} + + +multi MAIN (:test($)!) { + use Test; + is largest-multiple(1,0,2,6), 6210; + is largest-multiple(1,4,2,8), 8412; + is largest-multiple(1,4,7,6), 7614; + is largest-multiple(1,4,7,4), 7414; + is largest-multiple(1,3,7,9), '9731Inf'; + done-testing; +} + +multi MAIN (*@n) { + say largest-multiple @n; +} -- cgit