summaryrefslogtreecommitdiff
path: root/2023
diff options
context:
space:
mode:
authoromagdy7 <omar.professional8777@gmail.com>2023-12-02 11:38:06 +0200
committeromagdy7 <omar.professional8777@gmail.com>2023-12-02 11:38:06 +0200
commitac73586fd01ed2e6310a5022115a23057a1bc345 (patch)
treee09c9f6bf5f3fbcadf526b095dfb5f43c11397bb /2023
parent47f8224ece055efe4748d65eb40fa0e6cd9483f5 (diff)
downloadaoc-ac73586fd01ed2e6310a5022115a23057a1bc345.tar.xz
aoc-ac73586fd01ed2e6310a5022115a23057a1bc345.zip
Almost finished parsing day2 input
Diffstat (limited to '2023')
-rw-r--r--2023/Rust/input/day2.prod0
-rw-r--r--2023/Rust/input/day2_1.test5
-rw-r--r--2023/Rust/input/day2_2.test0
-rw-r--r--2023/Rust/src/day1.rs2
-rw-r--r--2023/Rust/src/day2.rs77
5 files changed, 83 insertions, 1 deletions
diff --git a/2023/Rust/input/day2.prod b/2023/Rust/input/day2.prod
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/2023/Rust/input/day2.prod
diff --git a/2023/Rust/input/day2_1.test b/2023/Rust/input/day2_1.test
new file mode 100644
index 0000000..295c36d
--- /dev/null
+++ b/2023/Rust/input/day2_1.test
@@ -0,0 +1,5 @@
+Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
+Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
+Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
+Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
+Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
diff --git a/2023/Rust/input/day2_2.test b/2023/Rust/input/day2_2.test
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/2023/Rust/input/day2_2.test
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));
+}