これのエラー処理に丸一日かかりました。。
fn main() { let mut maze = [ [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9], [9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 9], [9, 0, 9, 0, 0, 0, 9, 9, 0, 9, 9, 9], [9, 0, 9, 9, 0, 9, 0, 0, 0, 9, 0, 9], [9, 0, 0, 0, 9, 0, 0, 9, 9, 0, 9, 9], [9, 9, 9, 0, 0, 9, 0, 9, 0, 0, 0, 9], [9, 0, 0, 0, 9, 0, 9, 0, 0, 9, 1, 9], [9, 0, 9, 0, 0, 0, 0, 9, 0, 0, 9, 9], [9, 0, 0, 9, 0, 9, 0, 0, 9, 0, 0, 9], [9, 0, 9, 0, 9, 0, 9, 0, 0, 9, 0, 9], [9, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9], [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9] ]; let dir: [[i32; 2]; 4] = [[1, 0], [0, 1], [-1, 0], [0, -1]]; let mut p:[i32; 4] = [1, 1, 0, 0]; // x, y, depth, d 'main: while maze[p[0] as usize][p[1] as usize] != 1 { maze[p[0] as usize][p[1] as usize] = 2; 'sub: for i in 0..4 { let mut j: i32 = 3; if i != 0 { j = (p[3] + i - 1) % 4 } else if (p[3] - 1) < 0{ j = (p[3] - 1 + 4) % 4 } else { j = (p[3] - 1) % 4 } println!("j: {}", j); println!("p0: {}", p[0]); println!("p1: {}", p[1]); println!("p2: {}", p[2]); println!("p3: {}", p[3]); if maze[(p[0] + dir[j as usize][0])as usize][(p[1] + dir[j as usize][1]) as usize] < 2 { p[0] += dir[j as usize][0]; // x p[1] += dir[j as usize][1]; // y p[3] = j as i32; // d p[2] += 1; // depth println!("yes: {}", j); println!("< 2 p0: {}", p[0]); println!("< 2 p1: {}", p[1]); println!("< 2 p2: {}", p[2]); println!("< 2 p3: {}", p[3]); break 'sub; } else if maze[(p[0] + dir[j as usize][0]) as usize][(p[1] + dir[j as usize][1]) as usize] == 2 { p[0] += dir[j as usize][0]; p[1] += dir[j as usize][1]; p[3] = j as i32; p[2] -= 1; println!("yes: {}", j); println!("= 2 p0: {}", p[0]); println!("= 2 p1: {}", p[1]); println!("= 2 p2: {}", p[2]); println!("= 2 p3: {}", p[3]); break 'sub; } } } println!("最終: {}", p[2]); }
// 省略
最終: 28