From e4a393cbf63445cf6338c187189bef8a3350eaee Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Tue, 4 Jul 2023 16:38:38 +0800 Subject: challenge 223, raku solutions --- challenge-223/feng-chang/raku/ch-1.raku | 5 +++++ challenge-223/feng-chang/raku/ch-2.raku | 17 +++++++++++++++++ challenge-223/feng-chang/raku/test.raku | 23 +++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100755 challenge-223/feng-chang/raku/ch-1.raku create mode 100755 challenge-223/feng-chang/raku/ch-2.raku create mode 100755 challenge-223/feng-chang/raku/test.raku 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; -- cgit