Day 1 - improvement
This commit is contained in:
@@ -1,36 +1,18 @@
|
|||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use std::{fs, num};
|
use std::fs;
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
println!("Hello, world!");
|
|
||||||
|
|
||||||
let (count, extra, _) = fs::read_to_string("src/day1/day1-act.txt")?
|
let (count, extra, _) = fs::read_to_string("src/day1/day1-act.txt")?
|
||||||
.split("\n")
|
.split("\n")
|
||||||
.filter(|s| s.len() > 0)
|
.filter(|s| s.len() > 0)
|
||||||
.fold((0, 0, 50 as i32), |(sum, e, p), s| {
|
.fold((0, 0, 50 as i32), |(sum, e, p), s| {
|
||||||
let modi = if s.chars().nth(0).unwrap() == 'R' {
|
let modi = 1 + (-2 * (s.chars().nth(0).unwrap() == 'L') as i32);
|
||||||
1
|
|
||||||
} else {
|
|
||||||
-1
|
|
||||||
};
|
|
||||||
let v: i32 = s[1..].parse().unwrap();
|
let v: i32 = s[1..].parse().unwrap();
|
||||||
let mut nv: i32 = p + (v % 100) * modi;
|
let mut nv: i32 = p + (v % 100) * modi;
|
||||||
let mut extra = v / 100;
|
let extra = v / 100 + (p != 0 && (nv < 0 || nv > 100)) as i32;
|
||||||
if nv < 0 {
|
nv = nv + 100 * (nv < 0) as i32 + -100 * (nv >= 100) as i32;
|
||||||
nv = 100 + nv;
|
// println!("{} - {}: {}", s, nv, extra);
|
||||||
if p != 0 {
|
(sum + (nv == 0) as i32, e + extra, nv)
|
||||||
extra += 1;
|
|
||||||
}
|
|
||||||
} else if nv == 100 {
|
|
||||||
nv = nv - 100;
|
|
||||||
} else if nv > 100 {
|
|
||||||
nv = nv - 100;
|
|
||||||
if p != 0 {
|
|
||||||
extra += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
println!("{} - {}: {}", s, nv, extra);
|
|
||||||
(sum + (if nv == 0 { 1 } else { 0 }), e + extra, nv)
|
|
||||||
});
|
});
|
||||||
|
|
||||||
println!("{} and sec {}", count, count + extra);
|
println!("{} and sec {}", count, count + extra);
|
||||||
|
|||||||
Reference in New Issue
Block a user