aboutsummaryrefslogtreecommitdiff
path: root/challenge-215
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2023-05-03 17:47:55 +0800
committer冯昶 <fengchang@novel-supertv.com>2023-05-03 17:47:55 +0800
commitd94bcbc9af595102cbb8c7932fcd95437757d475 (patch)
treedc5b8d6b16c86aab3e24da5e2a7621f6774bc89f /challenge-215
parentfb913ef4e973a29450b92ca89588e839bf6635f6 (diff)
downloadperlweeklychallenge-club-d94bcbc9af595102cbb8c7932fcd95437757d475.tar.gz
perlweeklychallenge-club-d94bcbc9af595102cbb8c7932fcd95437757d475.tar.bz2
perlweeklychallenge-club-d94bcbc9af595102cbb8c7932fcd95437757d475.zip
challenge 215, raku solutions
Diffstat (limited to 'challenge-215')
-rw-r--r--challenge-215/feng-chang/README1
-rw-r--r--challenge-215/feng-chang/README.md2
-rwxr-xr-xchallenge-215/feng-chang/raku/ch-1.raku5
-rwxr-xr-xchallenge-215/feng-chang/raku/ch-2.raku8
-rwxr-xr-xchallenge-215/feng-chang/raku/test.raku30
5 files changed, 45 insertions, 1 deletions
diff --git a/challenge-215/feng-chang/README b/challenge-215/feng-chang/README
deleted file mode 100644
index 74e56de3ed..0000000000
--- a/challenge-215/feng-chang/README
+++ /dev/null
@@ -1 +0,0 @@
-Solutions by Feng Chang.
diff --git a/challenge-215/feng-chang/README.md b/challenge-215/feng-chang/README.md
new file mode 100644
index 0000000000..2ce326a102
--- /dev/null
+++ b/challenge-215/feng-chang/README.md
@@ -0,0 +1,2 @@
+# blog
+* [PWC #215](https://seaker.github.io/jekyll/update/2023/05/02/PWC-125.html)
diff --git a/challenge-215/feng-chang/raku/ch-1.raku b/challenge-215/feng-chang/raku/ch-1.raku
new file mode 100755
index 0000000000..919df1b9af
--- /dev/null
+++ b/challenge-215/feng-chang/raku/ch-1.raku
@@ -0,0 +1,5 @@
+#!/bin/env raku
+
+unit sub MAIN(*@S);
+
+put +@S.grep({ ![lt] .comb });
diff --git a/challenge-215/feng-chang/raku/ch-2.raku b/challenge-215/feng-chang/raku/ch-2.raku
new file mode 100755
index 0000000000..6a3da5801a
--- /dev/null
+++ b/challenge-215/feng-chang/raku/ch-2.raku
@@ -0,0 +1,8 @@
+#!/bin/env raku
+
+unit sub MAIN(*@numbers where @numbers.head(*-1).all == 0|1);
+
+@numbers .= map: *.Int;
+my $count = @numbers.pop;
+
+put +((^(+@numbers - 2)).grep({ @numbers[$_..$_+2].all == 0 }) ≥ $count);
diff --git a/challenge-215/feng-chang/raku/test.raku b/challenge-215/feng-chang/raku/test.raku
new file mode 100755
index 0000000000..42de6c4590
--- /dev/null
+++ b/challenge-215/feng-chang/raku/test.raku
@@ -0,0 +1,30 @@
+#!/bin/env raku
+
+use Test;
+
+# The Weekly Challenge 215
+
+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, Odd One Out
+pwc-test './ch-1.raku', |<abc xyz tsu>, 1, "Odd One out: 'abc', 'xyz', 'tsu' => 1";
+pwc-test './ch-1.raku', |<rat cab dad>, 3, "Odd One out: 'rat', 'cab', 'dad' => 3";
+pwc-test './ch-1.raku', |<x y z>, 0, "Odd One out: 'x', 'y', 'z' => 0";
+
+# Task 2, Number Placement
+pwc-test './ch-2.raku', |<1 0 0 0 1>, 1, 1, 'Number Placement: @numbers = (1,0,0,0,1), $count = 1 => 1';
+pwc-test './ch-2.raku', |<1 0 0 0 1>, 2, 0, 'Number Placement: @numbers = (1,0,0,0,1), $count = 2 => 0';
+pwc-test './ch-2.raku', |<1 0 0 0 0 0 0 0 1>, 3, 1, 'Number Placement: @numbers = (1,0,0,0,0,0,0,0,1), $count = 3 => 1';
+
+pwc-test './ch-2.raku', |<0 0 0 0 0>, 3, 1, 'Number Placement: @numbers = (0,0,0,0,0), $count = 3 => 1';
+pwc-test './ch-2.raku', |<0 0 0 0 0>, 4, 0, 'Number Placement: @numbers = (0,0,0,0,0), $count = 4 => 0';
+pwc-test './ch-2.raku', |<1 0 0 0 0 0 0 0 1>, 5, 1, 'Number Placement: @numbers = (1,0,0,0,0,0,0,0,1), $count = 5 => 1';
+pwc-test './ch-2.raku', |<1 0 0 0 0 0 0 0 1>, 6, 0, 'Number Placement: @numbers = (1,0,0,0,0,0,0,0,1), $count = 6 => 0';
+pwc-test './ch-2.raku', |<1 0 0 0 1 0 0 0 1>, 2, 1, 'Number Placement: @numbers = (1,0,0,0,1,0,0,0,1), $count = 2 => 1';
+pwc-test './ch-2.raku', |<1 0 0 0 1 0 0 0 1>, 3, 0, 'Number Placement: @numbers = (1,0,0,0,1,0,0,0,1), $count = 3 => 0';
+
+done-testing;