summaryrefslogtreecommitdiff
path: root/2023
diff options
context:
space:
mode:
authornekineki <nekineki@nekineki.net>2023-12-14 10:49:11 +0100
committernekineki <nekineki@nekineki.net>2023-12-14 10:49:54 +0100
commitb4a7a51404bc9242b8a54a4ce4fa72689ce4e075 (patch)
tree70b94e4ba834131f93b5e60e617be3951d62c704 /2023
parent1383458f70da63f82cf577957d5a0798898752e6 (diff)
day14 a bit faster
Diffstat (limited to '2023')
-rw-r--r--2023/day14.rs17
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);