diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2023-12-02 11:38:06 +0200 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2023-12-02 11:38:06 +0200 |
| commit | ac73586fd01ed2e6310a5022115a23057a1bc345 (patch) | |
| tree | e09c9f6bf5f3fbcadf526b095dfb5f43c11397bb /2023/Rust/src | |
| parent | 47f8224ece055efe4748d65eb40fa0e6cd9483f5 (diff) | |
| download | aoc-ac73586fd01ed2e6310a5022115a23057a1bc345.tar.xz aoc-ac73586fd01ed2e6310a5022115a23057a1bc345.zip | |
Almost finished parsing day2 input
Diffstat (limited to '2023/Rust/src')
| -rw-r--r-- | 2023/Rust/src/day1.rs | 2 | ||||
| -rw-r--r-- | 2023/Rust/src/day2.rs | 77 |
2 files changed, 78 insertions, 1 deletions
diff --git a/2023/Rust/src/day1.rs b/2023/Rust/src/day1.rs index 09cd49a..c8fae40 100644 --- a/2023/Rust/src/day1.rs +++ b/2023/Rust/src/day1.rs @@ -4,7 +4,7 @@ fn solve_part_one(data: &str) -> u32 { .collect::<Vec<_>>() .iter() .map(|x| { - format!("{}{}", x.chars().nth(0).unwrap(), x.chars().last().unwrap()) + format!("{}{}", x.chars().next().unwrap(), x.chars().last().unwrap()) .parse::<u32>() .unwrap() }) diff --git a/2023/Rust/src/day2.rs b/2023/Rust/src/day2.rs new file mode 100644 index 0000000..59ebd19 --- /dev/null +++ b/2023/Rust/src/day2.rs @@ -0,0 +1,77 @@ +use std::io::BufRead; + +#[derive(Debug)] +struct Game { + id: usize, + red: u32, + blue: u32, + green: u32, +} + +impl From<&str> for Game { + fn from(s: &str) -> Self { + let (game, sets) = s.split_once(':').unwrap(); + let (_, id) = game.split_once(' ').unwrap(); + let id = id.parse::<usize>().unwrap(); + let (mut r, mut g, mut b) = (0, 0, 0); + for set in sets.split(';') { + dbg!(&set.trim_start()); + let (first, second) = set.trim_start().split_once(',').unwrap(); + let (num_1, color_1) = first.split_once(' ').unwrap(); + let (num_2, color_2) = second.split_once(' ').unwrap(); + match color_1 { + "red" => { + r += num_1.parse::<u32>().unwrap(); + } + "green" => { + g += num_1.parse::<u32>().unwrap(); + } + "blue" => { + b += num_1.parse::<u32>().unwrap(); + } + _ => {} + } + match color_2 { + "red" => { + r += num_2.parse::<u32>().unwrap(); + } + "green" => { + g += num_2.parse::<u32>().unwrap(); + } + "blue" => { + b += num_2.parse::<u32>().unwrap(); + } + _ => {} + } + } + Self { + id, + red: r, + green: g, + blue: b, + } + } +} + +fn solve_part_one(data: &str) -> u32 { + let mut games: Vec<Game> = vec![]; + for game in data.lines() { + games.push(Game::from(game)); + } + dbg!(&games); + 42 +} + +fn solve_part_two(data: &str) -> u32 { + todo!() +} + +fn main() { + let test_1 = include_str!("../input/day2_1.test"); + let test_2 = include_str!("../input/day2_2.test"); + let prod = include_str!("../input/day2.prod"); + println!("part_1 test: {:?}", solve_part_one(test_1)); + // println!("part_1 prod {:?}", solve_part_one(prod)); + // println!("part_2 test: {:?}", solve_part_two(test_2)); + // println!("part_2 prod {:?}", solve_part_two(prod)); +} |
