diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-11-18 18:58:23 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-18 18:58:23 +0000 |
| commit | 4f9d9def02ffccd08461dedd24f0ede40c8611df (patch) | |
| tree | b8184f2d0488b750fb15df2087a63c7ec0a8aec1 | |
| parent | 35b93435dda8a500d81879990c55552b9cf7c5cb (diff) | |
| parent | baadeac3908d309acdc95cae65176602acadce4e (diff) | |
| download | perlweeklychallenge-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-x | challenge-086/feng-chang/raku/ch-1b.raku | 15 | ||||
| -rwxr-xr-x | challenge-086/feng-chang/raku/ch-2.raku | 13 | ||||
| -rwxr-xr-x | challenge-087/feng-chang/raku/ch-1.raku | 21 | ||||
| -rwxr-xr-x | challenge-087/feng-chang/raku/ch-2.raku | 25 | ||||
| -rw-r--r-- | challenge-087/feng-chang/raku/data-01.txt | 5 | ||||
| -rw-r--r-- | challenge-087/feng-chang/raku/data-02.txt | 4 | ||||
| -rw-r--r-- | challenge-087/feng-chang/raku/data-03.txt | 5 |
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 |
