Magic squares of doubly even order: Difference between revisions

→‎{{header|rust}}: Rust version
m (→‎{{header|AWK}}: Changed wording in explanation)
(→‎{{header|rust}}: Rust version)
Line 2,166:
</pre>
 
=={{header|Rust}}==
<lang rust>use std::env;
 
fn main() {
let args: Vec<String> = env::args().collect();
assert!(
args.len() == 2,
"Please specify the size of the magic square, as a positive multiple of 4."
);
let n = args[1].parse::<i32>().unwrap();
assert!(
n >= 4 && n % 4 == 0,
"Argument must be a positive multiple of 4."
);
 
let mc = (n * n + 1) * n / 2;
println!("Magic constant: {}\n", mc);
let width = mc.to_string().len() + 1;
let bits = 0b1001_0110_0110_1001u32;
let size = n * n;
let mult = n / 4;
let mut i = 0;
for r in 0..n {
for c in 0..n {
let bit_pos = c / mult + (r / mult) * 4;
print!(
"{e:>w$}",
e = if bits & (1 << bit_pos) != 0 {
i + 1
} else {
size - i
},
w = width
);
i += 1;
}
println!("");
}
}</lang>
{{out}}
<pre>
Magic constant: 260
 
1 2 62 61 60 59 7 8
9 10 54 53 52 51 15 16
48 47 19 20 21 22 42 41
40 39 27 28 29 30 34 33
32 31 35 36 37 38 26 25
24 23 43 44 45 46 18 17
49 50 14 13 12 11 55 56
57 58 6 5 4 3 63 64
</pre>
=={{header|Scala}}==
{{Out}}Best seen running in your browser either by [https://scalafiddle.io/sf/bdTcGF3/0 ScalaFiddle (ES aka JavaScript, non JVM)] or [https://scastie.scala-lang.org/gLhkwHHlRO6rPXg9U7MDzg Scastie (remote JVM)].
Line 2,191 ⟶ 2,243:
 
}</lang>
 
=={{header|Sidef}}==
{{trans|Ruby}}
Anonymous user