aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-11-18 18:58:23 +0000
committerGitHub <noreply@github.com>2020-11-18 18:58:23 +0000
commit4f9d9def02ffccd08461dedd24f0ede40c8611df (patch)
treeb8184f2d0488b750fb15df2087a63c7ec0a8aec1
parent35b93435dda8a500d81879990c55552b9cf7c5cb (diff)
parentbaadeac3908d309acdc95cae65176602acadce4e (diff)
downloadperlweeklychallenge-club-4f9d9def02ffccd08461dedd24f0ede40c8611df.tar.gz
perlweeklychallenge-club-4f9d9def02ffccd08461dedd24f0ede40c8611df.tar.bz2
perlweeklychallenge-club-4f9d9def02ffccd08461dedd24f0ede40c8611df.zip
Merge pull request #2787 from seaker/master
challenge #087, Feng Chang's raku solutions
-rwxr-xr-xchallenge-086/feng-chang/raku/ch-1b.raku15
-rwxr-xr-xchallenge-086/feng-chang/raku/ch-2.raku13
-rwxr-xr-xchallenge-087/feng-chang/raku/ch-1.raku21
-rwxr-xr-xchallenge-087/feng-chang/raku/ch-2.raku25
-rw-r--r--challenge-087/feng-chang/raku/data-01.txt5
-rw-r--r--challenge-087/feng-chang/raku/data-02.txt4
-rw-r--r--challenge-087/feng-chang/raku/data-03.txt5
7 files changed, 78 insertions, 10 deletions
diff --git a/challenge-086/feng-chang/raku/ch-1b.raku b/challenge-086/feng-chang/raku/ch-1b.raku
new file mode 100755
index 0000000000..7f2fa7676c
--- /dev/null
+++ b/challenge-086/feng-chang/raku/ch-1b.raku
@@ -0,0 +1,15 @@
+#!/bin/env raku
+
+sub USAGE() {
+print Q:c:to/END/;
+ Usage: {$*PROGRAM-NAME} <number A> <array N>
+ e.g.:
+ ./ch-1b.raku 7 10 8 12 15 5
+ ./ch-1b.raku 6 1 5 2 9 7
+ ./ch-1b.raku 15 10 30 20 50 40
+ END
+}
+
+sub MAIN(Int:D $A, *@N) {
+ put + [or] @N.combinations(2).map({ abs($_[0] - $_[1]) == abs($A)});
+}
diff --git a/challenge-086/feng-chang/raku/ch-2.raku b/challenge-086/feng-chang/raku/ch-2.raku
index 3abf043233..679037fae0 100755
--- a/challenge-086/feng-chang/raku/ch-2.raku
+++ b/challenge-086/feng-chang/raku/ch-2.raku
@@ -51,7 +51,6 @@ sub solve(@sdk is copy, UInt:D $pos) {
put @sdk[@rows-index[$_]] for ^9;
return;
}
-
return if contradict(@sdk);
if @is-uncertain[$pos] {
@@ -66,15 +65,9 @@ sub solve(@sdk is copy, UInt:D $pos) {
multi MAIN($data-file) {
my @puzzle = $data-file.IO.words;
- for ^81 -> $i {
- if @puzzle[$i] eq '_' {
- @puzzle[$i] = 0;
- @is-uncertain[$i] = True;
- } else {
- @puzzle[$i] .= Int;
- @is-uncertain[$i] = False;
- }
- }
+ @puzzle[$_] = 0 if @puzzle[$_] eq '_' for ^81;
+ @puzzle[$_] .= Int for ^81;
+ @is-uncertain[$_] = @puzzle[$_] == 0 for ^81;
solve(@puzzle, 0);
}
diff --git a/challenge-087/feng-chang/raku/ch-1.raku b/challenge-087/feng-chang/raku/ch-1.raku
new file mode 100755
index 0000000000..2b5b7ea2cc
--- /dev/null
+++ b/challenge-087/feng-chang/raku/ch-1.raku
@@ -0,0 +1,21 @@
+#!/bin/env raku
+
+sub MAIN(*@N) {
+ @N .= sort;
+ my ($start, $end) = 0, 0;
+
+ my $i = 1;
+ while $i < @N.elems {
+ my $from = $i - 1;
+ ++$i while $i < @N.elems and @N[$i - 1] + 1 == @N[$i];
+
+ if $i - $from > $end - $start {
+ $start = $from;
+ $end = $i - 1;
+ }
+
+ ++$i;
+ }
+
+ say @N[$start .. $end] if $end > $start;
+}
diff --git a/challenge-087/feng-chang/raku/ch-2.raku b/challenge-087/feng-chang/raku/ch-2.raku
new file mode 100755
index 0000000000..f757fe5cdb
--- /dev/null
+++ b/challenge-087/feng-chang/raku/ch-2.raku
@@ -0,0 +1,25 @@
+#!/bin/env raku
+
+my @N;
+for $*IN.lines -> $line {
+ @N.push($line.words».Int);
+}
+
+my $LR = 0;
+my ($m, $n) = (0, 0);
+
+for 0 ..^ @N.elems - 1 X 0 ..^ @N[0].elems - 1 -> ($i0, $j0) {
+ for $i0 + 1 ..^ @N.elems X $j0 + 1 ..^ @N[0].elems -> ($i1, $j1) {
+ if @N[$i0..$i1; $j0..$j1].all == 1 {
+ my $row = $i1 - $i0 + 1;
+ my $col = $j1 - $j0 + 1;
+ if $row * $col > $LR {
+ $LR = $row * $col;
+ $m = $row;
+ $n = $col;
+ }
+ }
+ }
+}
+
+(1 xx $n).put for ^$m;
diff --git a/challenge-087/feng-chang/raku/data-01.txt b/challenge-087/feng-chang/raku/data-01.txt
new file mode 100644
index 0000000000..0e476bfcb8
--- /dev/null
+++ b/challenge-087/feng-chang/raku/data-01.txt
@@ -0,0 +1,5 @@
+0 0 0 1 0 0
+1 1 1 0 0 0
+0 0 1 0 0 1
+1 1 1 1 1 0
+1 1 1 1 1 0
diff --git a/challenge-087/feng-chang/raku/data-02.txt b/challenge-087/feng-chang/raku/data-02.txt
new file mode 100644
index 0000000000..cc2e819552
--- /dev/null
+++ b/challenge-087/feng-chang/raku/data-02.txt
@@ -0,0 +1,4 @@
+1 0 1 0 1 0
+0 1 0 1 0 1
+1 0 1 0 1 0
+0 1 0 1 0 1
diff --git a/challenge-087/feng-chang/raku/data-03.txt b/challenge-087/feng-chang/raku/data-03.txt
new file mode 100644
index 0000000000..00c492c822
--- /dev/null
+++ b/challenge-087/feng-chang/raku/data-03.txt
@@ -0,0 +1,5 @@
+0 0 0 1 1 1
+1 1 1 1 1 1
+0 0 1 0 0 1
+0 0 1 1 1 1
+0 0 1 1 1 1