diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2021-06-05 19:36:07 +0200 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2021-06-05 19:36:07 +0200 |
| commit | ce2a306f1127ca23cba0c5553b32f11118dda096 (patch) | |
| tree | 7fcf546cb178386adc0eaf8976e97212bc18ec22 | |
| parent | 373a97f7ee737cbd8d3e8d87a96b6ae0dec388b5 (diff) | |
| download | perlweeklychallenge-club-ce2a306f1127ca23cba0c5553b32f11118dda096.tar.gz perlweeklychallenge-club-ce2a306f1127ca23cba0c5553b32f11118dda096.tar.bz2 perlweeklychallenge-club-ce2a306f1127ca23cba0c5553b32f11118dda096.zip | |
solutions week 115
| -rw-r--r-- | challenge-115/wambash/raku/ch-1.raku | 30 | ||||
| -rw-r--r-- | challenge-115/wambash/raku/ch-2.raku | 25 |
2 files changed, 55 insertions, 0 deletions
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; +} |
