diff options
Diffstat (limited to 'src/day5pt2.rs')
| -rw-r--r-- | src/day5pt2.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/day5pt2.rs b/src/day5pt2.rs new file mode 100644 index 0000000..8f95d3d --- /dev/null +++ b/src/day5pt2.rs @@ -0,0 +1,39 @@ +pub fn main() { + let txt = std::fs::read_to_string("./input/day5.txt").unwrap(); + + let mut seeds: Vec<i64> = vec![]; + let mut rules: Vec<(i64, i64, i64)> = vec![]; + + for (i, line) in txt.lines().enumerate() { + if line != "" { + // dodaj u vec + if i != 0 && line.chars().nth(line.len() - 1).unwrap() != ':' { + let br: Vec<i64> = line.split(" ").map(|s| s.parse().unwrap()).collect(); + rules.push((br[0], br[1], br[2])); + } + } else { + // obradi + for i in 0..seeds.len() { + for rule in &rules { + if rule.1 <= seeds[i] && seeds[i] < rule.1 + rule.2 { + seeds[i] += rule.0 - rule.1; + break; + } + } + } + rules.clear(); + } + + if seeds.is_empty() && line != "" { + seeds = line + .split(": ") + .collect::<Vec<_>>() + .get(1) + .unwrap() + .split(" ") + .map(|s| s.parse().unwrap()) + .collect(); + } + } + println!("{}", 0); +} |
