diff options
| author | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-06 01:45:05 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-06 01:45:05 +0100 |
| commit | 8089545c22b1ae4a98e967f070c3e298e6808961 (patch) | |
| tree | 0f8b13fbdeffc7ae03f3d7bfefbf6ef81bb3fb3a /src/day5pt1.rs | |
Initial commit
Diffstat (limited to 'src/day5pt1.rs')
| -rw-r--r-- | src/day5pt1.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/day5pt1.rs b/src/day5pt1.rs new file mode 100644 index 0000000..a50a66a --- /dev/null +++ b/src/day5pt1.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!("{}", seeds.iter().min().unwrap()); +} |
