diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2023-07-04 16:38:38 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2023-07-04 16:38:38 +0800 |
| commit | e4a393cbf63445cf6338c187189bef8a3350eaee (patch) | |
| tree | 383db44a6a5af2ea9692e5af4c95e467232971ed | |
| parent | 6b1b9742494a13a0483e74afd91e432cd14973e4 (diff) | |
| download | perlweeklychallenge-club-e4a393cbf63445cf6338c187189bef8a3350eaee.tar.gz perlweeklychallenge-club-e4a393cbf63445cf6338c187189bef8a3350eaee.tar.bz2 perlweeklychallenge-club-e4a393cbf63445cf6338c187189bef8a3350eaee.zip | |
challenge 223, raku solutions
| -rwxr-xr-x | challenge-223/feng-chang/raku/ch-1.raku | 5 | ||||
| -rwxr-xr-x | challenge-223/feng-chang/raku/ch-2.raku | 17 | ||||
| -rwxr-xr-x | challenge-223/feng-chang/raku/test.raku | 23 |
3 files changed, 45 insertions, 0 deletions
diff --git a/challenge-223/feng-chang/raku/ch-1.raku b/challenge-223/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..59293b1a83 --- /dev/null +++ b/challenge-223/feng-chang/raku/ch-1.raku @@ -0,0 +1,5 @@ +#!/bin/env raku + +unit sub MAIN(UInt:D $n); + +put (2..$n).grep(*.is-prime).elems; diff --git a/challenge-223/feng-chang/raku/ch-2.raku b/challenge-223/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..82f2f56ab6 --- /dev/null +++ b/challenge-223/feng-chang/raku/ch-2.raku @@ -0,0 +1,17 @@ +#!/bin/env raku + +unit sub MAIN(*@N where @N.all ≥ 0); + +put max-coins(|@N); + +multi max-coins($n) { $n } +multi max-coins($m, $n) { $m * $n + max($m, $n) } + +multi max-coins(*@N) { + gather { + for 1 ..^ +@N - 1 -> $i { + my @M = @N.clone; + @M.splice($i, 1); + take max-coins(|@M) + [*] @N[$i-1 .. $i+1]; + } }.max +} diff --git a/challenge-223/feng-chang/raku/test.raku b/challenge-223/feng-chang/raku/test.raku new file mode 100755 index 0000000000..7d88f54999 --- /dev/null +++ b/challenge-223/feng-chang/raku/test.raku @@ -0,0 +1,23 @@ +#!/bin/env raku + +# The Weekly Challenge 223 +use Test; + +sub pwc-test(Str:D $script, *@input) { + my ($expect, $assertion) = @input.splice(*-2, 2); + my $p = run $script, |@input, :out; + is $p.out.slurp(:close).chomp, $expect, $assertion; +} + +# Task 1, Count Primes +pwc-test './ch-1.raku', 10, 4, 'Count Primes: 10 => 4'; +pwc-test './ch-1.raku', 7, 4, 'Count Primes: 7 => 4'; +pwc-test './ch-1.raku', 0, 0, 'Count Primes: 0 => 0'; +pwc-test './ch-1.raku', 20, 8, 'Count Primes: 20 => 8'; + +# Task 2, Max Coins +pwc-test './ch-2.raku', |<3 1 5 8>, 167, 'Max Coins: (3, 1, 5, 8) => 167'; +pwc-test './ch-2.raku', |<1 5>, 10, 'Max Coins: (1, 5) => 10'; +pwc-test './ch-2.raku', |<3 8>, 32, 'Max Coins: (3, 8) => 32'; + +done-testing; |
