diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2023-07-04 17:40:06 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2023-07-04 17:40:06 +0800 |
| commit | badcca30414c7e4ed8095a8b40e09ebf9a384f8b (patch) | |
| tree | 04093bebd2cf88144a7ccc41d4a299513c47d337 | |
| parent | e4a393cbf63445cf6338c187189bef8a3350eaee (diff) | |
| download | perlweeklychallenge-club-badcca30414c7e4ed8095a8b40e09ebf9a384f8b.tar.gz perlweeklychallenge-club-badcca30414c7e4ed8095a8b40e09ebf9a384f8b.tar.bz2 perlweeklychallenge-club-badcca30414c7e4ed8095a8b40e09ebf9a384f8b.zip | |
fix challenge 222, task #2
| -rwxr-xr-x | challenge-222/feng-chang/raku/ch-2.raku | 13 | ||||
| -rwxr-xr-x | challenge-222/feng-chang/raku/test.raku | 21 |
2 files changed, 29 insertions, 5 deletions
diff --git a/challenge-222/feng-chang/raku/ch-2.raku b/challenge-222/feng-chang/raku/ch-2.raku index f3d62fba96..0ed30faa52 100755 --- a/challenge-222/feng-chang/raku/ch-2.raku +++ b/challenge-222/feng-chang/raku/ch-2.raku @@ -5,12 +5,15 @@ unit sub MAIN(*@N where @N.all > 0); @N = +«@N; while +@N > 1 { - my (\a) = @N.splice((^+@N).pick, 1); - my (\b) = @N.splice((^+@N).pick, 1); - my \d = abs(b - a); - @N.splice((^(+@N+1)).pick, 0, d) if d; + my \ndx-a = @N.first(@N.max, :k); + my (\a) = @N.splice(ndx-a, 1); # No. 1 - put "pick {a} and {b} => ({@N.join(', ')})"; + my \ndx-b = @N.first(@N.max, :k); + my (\b) = @N.splice(ndx-b, 1); # No. 2 + + my \d = a - b; + @N.splice(ndx-a - (ndx-a > ndx-b), 0, d) if d; + #put "pick {a} and {b} => ({@N.join(', ')})"; } put +@N ?? @N[0] !! 0; diff --git a/challenge-222/feng-chang/raku/test.raku b/challenge-222/feng-chang/raku/test.raku new file mode 100755 index 0000000000..877c3e9603 --- /dev/null +++ b/challenge-222/feng-chang/raku/test.raku @@ -0,0 +1,21 @@ +#!/bin/env raku + +# The Weekly Challenge 222 +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, Matching Members +pwc-test './ch-1.raku', |<1 1 4 2 1 3>, 3, 'Matching Members: 1, 1, 4, 2, 1, 3 => 3'; +pwc-test './ch-1.raku', |<5 1 2 3 4>, 0, 'Matching Members: 5, 1, 2, 3, 4 => 0'; +pwc-test './ch-1.raku', |<1 2 3 4 5>, 5, 'Matching Members: 1, 2, 3, 4, 5 => 5'; + +# Task 2, Last Member +pwc-test './ch-2.raku', |<2 7 4 1 8 1>, 1, 'Last Member: (2, 7, 4, 1, 8, 1) => 1'; +pwc-test './ch-2.raku', |<1 1>, 0, 'Last Member: (1, 1) => 0'; + +done-testing; |
