diff options
| -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); } |
