Coin de Gamma
1 year ago
1 changed files with 55 additions and 0 deletions
@ -0,0 +1,55 @@
|
||||
fn get_matrix(n: usize) -> u32 { |
||||
let mut xss: Vec<Vec<u32>> = Vec::new(); |
||||
for _i in 0..n { |
||||
let mut r = Vec::new(); |
||||
for _j in 0..n { |
||||
r.push(0u32); |
||||
} |
||||
xss.push(r); |
||||
} |
||||
|
||||
xss[n/2][n/2] = 1; |
||||
|
||||
let mvs = [(1, 0), (0, -1), (-1, 0), (0, 1)]; |
||||
let mut mvi = 0usize; |
||||
let mut l = 1; |
||||
let mut li = 0; |
||||
let mut i: usize = n / 2; |
||||
let mut j: usize = n / 2 + 1; |
||||
let mut res = 1; |
||||
for k in 2u32..= (n * n) as u32 { |
||||
xss[i][j] = k; |
||||
let mv = mvs[mvi]; |
||||
//println!("mvi: {}", mvi);
|
||||
if mv.0 == 1 { i += 1; } |
||||
if mv.0 == -1 { i -= 1; } |
||||
if mv.1 == 1 { j += 1; } |
||||
if mv.1 == -1 { j-= 1; } |
||||
li += 1; |
||||
//println!("li vs l: {} vs {}", li, l);
|
||||
if li == l { |
||||
mvi += 1; |
||||
li = 0; |
||||
if mvi == 1 { l += 1; } |
||||
if mvi == 3 { l += 1; } |
||||
if mvi == 4 { mvi = 0; } |
||||
let d = if mvi == 0 { k } else { k + 1 }; |
||||
//println!("{}", d);
|
||||
res += d; |
||||
} |
||||
} |
||||
|
||||
//for i in 0..n {
|
||||
// for j in 0..n {
|
||||
// print!("{}\t", xss[i][j]);
|
||||
// }
|
||||
// println!("");
|
||||
//}
|
||||
|
||||
res |
||||
} |
||||
|
||||
fn main() { |
||||
println!("{}", get_matrix(1001)); |
||||
} |
||||
|
Loading…
Reference in new issue