aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2023-07-04 17:40:06 +0800
committer冯昶 <fengchang@novel-supertv.com>2023-07-04 17:40:06 +0800
commitbadcca30414c7e4ed8095a8b40e09ebf9a384f8b (patch)
tree04093bebd2cf88144a7ccc41d4a299513c47d337
parente4a393cbf63445cf6338c187189bef8a3350eaee (diff)
downloadperlweeklychallenge-club-badcca30414c7e4ed8095a8b40e09ebf9a384f8b.tar.gz
perlweeklychallenge-club-badcca30414c7e4ed8095a8b40e09ebf9a384f8b.tar.bz2
perlweeklychallenge-club-badcca30414c7e4ed8095a8b40e09ebf9a384f8b.zip
fix challenge 222, task #2
-rwxr-xr-xchallenge-222/feng-chang/raku/ch-2.raku13
-rwxr-xr-xchallenge-222/feng-chang/raku/test.raku21
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;