diff options
| author | Mark Anderson <mark@frontrangerunner.com> | 2020-12-01 04:20:16 -0700 |
|---|---|---|
| committer | Mark Anderson <mark@frontrangerunner.com> | 2020-12-01 04:20:16 -0700 |
| commit | 198a24d7db5ac5828c47cfa0597208f8077ef3be (patch) | |
| tree | a1eeca16cb18c8668fdeeb493154b9e5b36cadef | |
| parent | ed3569442b4db652b84ef54036fa04b6883678ff (diff) | |
| download | perlweeklychallenge-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.p6 | 15 |
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); } |
