From 198a24d7db5ac5828c47cfa0597208f8077ef3be Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Tue, 1 Dec 2020 04:20:16 -0700 Subject: ch-2.p6 simplified --- challenge-089/mark-anderson/raku/ch-2.p6 | 15 ++++++--------- 1 file 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); } -- cgit From b3ae80079b03aef0898f84ee8145f1df47ca7371 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Tue, 1 Dec 2020 04:50:16 -0700 Subject: ch-2.p6 simplified --- challenge-089/mark-anderson/raku/ch-2.p6 | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/challenge-089/mark-anderson/raku/ch-2.p6 b/challenge-089/mark-anderson/raku/ch-2.p6 index c698059b65..6025829147 100644 --- a/challenge-089/mark-anderson/raku/ch-2.p6 +++ b/challenge-089/mark-anderson/raku/ch-2.p6 @@ -2,6 +2,32 @@ # With help from https://www.wikihow.com/Solve-a-Magic-Square # +=begin usage + +Usage: raku ch-2.p6 17 + +Output: + +[155 174 193 212 231 250 269 288 1 20 39 58 77 96 115 134 153] +[173 192 211 230 249 268 287 17 19 38 57 76 95 114 133 152 154] +[191 210 229 248 267 286 16 18 37 56 75 94 113 132 151 170 172] +[209 228 247 266 285 15 34 36 55 74 93 112 131 150 169 171 190] +[227 246 265 284 14 33 35 54 73 92 111 130 149 168 187 189 208] +[245 264 283 13 32 51 53 72 91 110 129 148 167 186 188 207 226] +[263 282 12 31 50 52 71 90 109 128 147 166 185 204 206 225 244] +[281 11 30 49 68 70 89 108 127 146 165 184 203 205 224 243 262] +[ 10 29 48 67 69 88 107 126 145 164 183 202 221 223 242 261 280] +[ 28 47 66 85 87 106 125 144 163 182 201 220 222 241 260 279 9] +[ 46 65 84 86 105 124 143 162 181 200 219 238 240 259 278 8 27] +[ 64 83 102 104 123 142 161 180 199 218 237 239 258 277 7 26 45] +[ 82 101 103 122 141 160 179 198 217 236 255 257 276 6 25 44 63] +[100 119 121 140 159 178 197 216 235 254 256 275 5 24 43 62 81] +[118 120 139 158 177 196 215 234 253 272 274 4 23 42 61 80 99] +[136 138 157 176 195 214 233 252 271 273 3 22 41 60 79 98 117] +[137 156 175 194 213 232 251 270 289 2 21 40 59 78 97 116 135] + +=end usage + use Scalar::History; unit sub MAIN(UInt $n where * mod 2 = 3); #= a positive odd integer -- cgit From a55dd6a6b5f3766a631f8403109dd7f61e8c8aa2 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Tue, 1 Dec 2020 04:55:31 -0700 Subject: ch-2.p6 simplified --- challenge-089/mark-anderson/raku/ch-2.p6 | 8 ++++++-- challenge-089/mark-anderson/raku/out | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 challenge-089/mark-anderson/raku/out diff --git a/challenge-089/mark-anderson/raku/ch-2.p6 b/challenge-089/mark-anderson/raku/ch-2.p6 index 6025829147..cd40917e6c 100644 --- a/challenge-089/mark-anderson/raku/ch-2.p6 +++ b/challenge-089/mark-anderson/raku/ch-2.p6 @@ -4,9 +4,13 @@ =begin usage -Usage: raku ch-2.p6 17 +raku ch-2.p6 -Output: +[8 1 6] +[3 5 7] +[4 9 2] + +raku ch-2.p6 17 [155 174 193 212 231 250 269 288 1 20 39 58 77 96 115 134 153] [173 192 211 230 249 268 287 17 19 38 57 76 95 114 133 152 154] diff --git a/challenge-089/mark-anderson/raku/out b/challenge-089/mark-anderson/raku/out new file mode 100644 index 0000000000..79953f3eed --- /dev/null +++ b/challenge-089/mark-anderson/raku/out @@ -0,0 +1,3 @@ +[8 1 6] +[3 5 7] +[4 9 2] -- cgit From 01b1ad00693de444b350511c3e3c98e38c55d7c1 Mon Sep 17 00:00:00 2001 From: andemark <53903062+andemark@users.noreply.github.com> Date: Tue, 1 Dec 2020 05:23:48 -0700 Subject: Delete out --- challenge-089/mark-anderson/raku/out | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 challenge-089/mark-anderson/raku/out diff --git a/challenge-089/mark-anderson/raku/out b/challenge-089/mark-anderson/raku/out deleted file mode 100644 index 79953f3eed..0000000000 --- a/challenge-089/mark-anderson/raku/out +++ /dev/null @@ -1,3 +0,0 @@ -[8 1 6] -[3 5 7] -[4 9 2] -- cgit From bd55b65fbff23655039e2ac55f6d643a13f3d85f Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Tue, 1 Dec 2020 05:29:12 -0700 Subject: ch-2.p6 simplified --- challenge-089/mark-anderson/raku/ch-2.p6 | 10 ++++------ challenge-089/mark-anderson/raku/out | 3 --- 2 files changed, 4 insertions(+), 9 deletions(-) delete mode 100644 challenge-089/mark-anderson/raku/out diff --git a/challenge-089/mark-anderson/raku/ch-2.p6 b/challenge-089/mark-anderson/raku/ch-2.p6 index cd40917e6c..e4c838d686 100644 --- a/challenge-089/mark-anderson/raku/ch-2.p6 +++ b/challenge-089/mark-anderson/raku/ch-2.p6 @@ -32,24 +32,22 @@ raku ch-2.p6 17 =end usage -use Scalar::History; - unit sub MAIN(UInt $n where * mod 2 = 3); #= a positive odd integer .say for odd-magic-square($n); sub odd-magic-square($n) { my @matrix = [0 xx $n] xx $n; - my $r := Scalar::History.create(1); - my $c := Scalar::History.create(($n / 2).floor - 1); + my $r = 1; + my $c = ($n / 2).floor - 1; 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; - $c = $c.VAR.get-history.tail; + $r = ($r + 1) mod $n + 1; + $c = ($c - 1) mod $n; } @matrix[$r][$c] = $num; diff --git a/challenge-089/mark-anderson/raku/out b/challenge-089/mark-anderson/raku/out deleted file mode 100644 index 79953f3eed..0000000000 --- a/challenge-089/mark-anderson/raku/out +++ /dev/null @@ -1,3 +0,0 @@ -[8 1 6] -[3 5 7] -[4 9 2] -- cgit