diff options
| author | nekineki <nekineki@nekineki.net> | 2023-12-14 10:49:11 +0100 |
|---|---|---|
| committer | nekineki <nekineki@nekineki.net> | 2023-12-14 10:49:54 +0100 |
| commit | b4a7a51404bc9242b8a54a4ce4fa72689ce4e075 (patch) | |
| tree | 70b94e4ba834131f93b5e60e617be3951d62c704 /2023 | |
| parent | 1383458f70da63f82cf577957d5a0798898752e6 (diff) | |
day14 a bit faster
Diffstat (limited to '2023')
| -rw-r--r-- | 2023/day14.rs | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/2023/day14.rs b/2023/day14.rs index cb5ea93..f7a827c 100644 --- a/2023/day14.rs +++ b/2023/day14.rs @@ -20,11 +20,11 @@ fn new_north_y(x: usize, y: usize, m: &Vec<Vec<Spc>>) -> usize { return 0; } -fn rotate_positive(m: Vec<Vec<Spc>>) -> Vec<Vec<Spc>> { +fn rotate_negative(m: Vec<Vec<Spc>>) -> Vec<Vec<Spc>> { let mut out: Vec<Vec<Spc>> = Vec::new(); - for i in (0..m[0].len()).rev() { + for i in 0..m[0].len() { let mut r: Vec<Spc> = Vec::new(); - for j in 0..m.len() { + for j in (0..m.len()).rev() { r.push(m[j][i]); } out.push(r); @@ -100,7 +100,7 @@ fn main() { let mut c0 = 0; let mut c1 = 0; - for cycle in 0..1000000000 { + for cycle in 1.. { for _ in 0..4 { for i in 0..m2[0].len() { for j in 0..m2.len() { @@ -111,20 +111,17 @@ fn main() { } } } - m2 = rotate_positive(m2); - m2 = rotate_positive(m2); - m2 = rotate_positive(m2); + m2 = rotate_negative(m2); } + cm.insert(cycle, calc_load(&m2)); if let Some(cycle_start) = mm.insert(m2.clone(), cycle) { c0 = cycle_start; c1 = cycle; break; } - cm.insert(cycle, calc_load(&m2)); } - // ne vem zakaj rabis ta - 1 - let res2 = cm[&((1000000000 - c0 - 1) % (c1 - c0) + c0)]; + let res2 = cm[&((1000000000 - c0) % (c1 - c0) + c0)]; println!("res1: {}", res1); println!("res2: {}", res2); |
