aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Anderson <mark@frontrangerunner.com>2020-12-01 04:20:16 -0700
committerMark Anderson <mark@frontrangerunner.com>2020-12-01 04:20:16 -0700
commit198a24d7db5ac5828c47cfa0597208f8077ef3be (patch)
treea1eeca16cb18c8668fdeeb493154b9e5b36cadef
parented3569442b4db652b84ef54036fa04b6883678ff (diff)
downloadperlweeklychallenge-club-198a24d7db5ac5828c47cfa0597208f8077ef3be.tar.gz
perlweeklychallenge-club-198a24d7db5ac5828c47cfa0597208f8077ef3be.tar.bz2
perlweeklychallenge-club-198a24d7db5ac5828c47cfa0597208f8077ef3be.zip
ch-2.p6 simplified
-rw-r--r--challenge-089/mark-anderson/raku/ch-2.p615
1 files changed, 6 insertions, 9 deletions
diff --git a/challenge-089/mark-anderson/raku/ch-2.p6 b/challenge-089/mark-anderson/raku/ch-2.p6
index 47c7b8292b..c698059b65 100644
--- a/challenge-089/mark-anderson/raku/ch-2.p6
+++ b/challenge-089/mark-anderson/raku/ch-2.p6
@@ -9,16 +9,13 @@ unit sub MAIN(UInt $n where * mod 2 = 3); #= a positive odd integer
.say for odd-magic-square($n);
sub odd-magic-square($n) {
- subset Valid of UInt where 0 <= * < $n;
-
- my $r := Scalar::History.create(0, Valid);
- my $c := Scalar::History.create(($n / 2).floor, Valid);
my @matrix = [0 xx $n] xx $n;
- @matrix[$r][$c] = 1;
+ my $r := Scalar::History.create(1);
+ my $c := Scalar::History.create(($n / 2).floor - 1);
- for 2..($n**2) -> $num {
- try $r--; if $! { $r = $n - 1 }
- try $c++; if $! { $c = 0 }
+ for 1..($n**2) -> $num {
+ $r = ($r - 1) mod $n;
+ $c = ($c + 1) mod $n;
if @matrix[$r][$c] {
$r = $r.VAR.get-history.tail + 1;
@@ -28,5 +25,5 @@ sub odd-magic-square($n) {
@matrix[$r][$c] = $num;
}
- @matrix.map(*.fmt("%{($n**2).chars}d").Array);
+ @matrix.map(*.fmt( "%{ ($n**2).chars }d" ).Array);
}