From b94278d5002dce5d92f4f642013c11cbdcf74fc6 Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Sun, 15 Oct 2023 16:35:17 +0200 Subject: [PATCH] Created analyse function that gathers most of the data from the input of Day 5. --- rust/day4/src/main.rs | 6 +- rust/day5/Cargo.lock | 7 + rust/day5/Cargo.toml | 11 + rust/day5/exemple | 9 + rust/day5/input | 512 ++++++++++++++++++++++++++++++++++++++++++ rust/day5/src/main.rs | 54 +++++ 6 files changed, 596 insertions(+), 3 deletions(-) create mode 100644 rust/day5/Cargo.lock create mode 100644 rust/day5/Cargo.toml create mode 100644 rust/day5/exemple create mode 100644 rust/day5/input create mode 100644 rust/day5/src/main.rs diff --git a/rust/day4/src/main.rs b/rust/day4/src/main.rs index 6de14f1..83f5d21 100644 --- a/rust/day4/src/main.rs +++ b/rust/day4/src/main.rs @@ -22,16 +22,16 @@ fn first_part(str: &String) { println!("Final Count: {}", count); } -fn second_part(str : &String) { +fn second_part(str: &String) { let mut count = 0; let pairs: Vec> = str .split("\r\n") .map(|ch| ch.split(",").collect()) .collect(); for pair in &pairs { - if convert(pair, 0,1) >= convert(pair, 1,0) && convert(pair, 0,0) <= convert(pair, 1,1) + if convert(pair, 0, 1) >= convert(pair, 1, 0) && convert(pair, 0, 0) <= convert(pair, 1, 1) { - count +=1 + count += 1 } } println!("Part 2 Count : {}", count); diff --git a/rust/day5/Cargo.lock b/rust/day5/Cargo.lock new file mode 100644 index 0000000..91d4e8b --- /dev/null +++ b/rust/day5/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aoc-day4" +version = "0.1.0" diff --git a/rust/day5/Cargo.toml b/rust/day5/Cargo.toml new file mode 100644 index 0000000..da7c8fa --- /dev/null +++ b/rust/day5/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "aoc-day4" +version = "0.1.0" +edition = "2021" +authors = ["Yohan Boujon "] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] + +[workspace] diff --git a/rust/day5/exemple b/rust/day5/exemple new file mode 100644 index 0000000..e98aba4 --- /dev/null +++ b/rust/day5/exemple @@ -0,0 +1,9 @@ + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2 \ No newline at end of file diff --git a/rust/day5/input b/rust/day5/input new file mode 100644 index 0000000..e054278 --- /dev/null +++ b/rust/day5/input @@ -0,0 +1,512 @@ + [G] [P] [M] + [V] [M] [W] [S] [Q] + [N] [N] [G] [H] [T] [F] + [J] [W] [V] [Q] [W] [F] [P] +[C] [H] [T] [T] [G] [B] [Z] [B] +[S] [W] [S] [L] [F] [B] [P] [C] [H] +[G] [M] [Q] [S] [Z] [T] [J] [D] [S] +[B] [T] [M] [B] [J] [C] [T] [G] [N] + 1 2 3 4 5 6 7 8 9 + +move 2 from 4 to 2 +move 6 from 9 to 7 +move 4 from 7 to 2 +move 2 from 4 to 1 +move 2 from 6 to 7 +move 1 from 3 to 8 +move 4 from 7 to 1 +move 2 from 3 to 2 +move 3 from 8 to 5 +move 3 from 1 to 4 +move 12 from 2 to 5 +move 2 from 6 to 8 +move 12 from 5 to 8 +move 3 from 7 to 9 +move 18 from 8 to 9 +move 2 from 8 to 6 +move 3 from 2 to 3 +move 14 from 9 to 4 +move 1 from 1 to 3 +move 7 from 9 to 3 +move 1 from 2 to 1 +move 8 from 4 to 5 +move 5 from 6 to 3 +move 2 from 7 to 9 +move 3 from 4 to 9 +move 4 from 9 to 6 +move 4 from 6 to 1 +move 8 from 4 to 6 +move 10 from 1 to 2 +move 13 from 3 to 2 +move 17 from 5 to 9 +move 2 from 5 to 1 +move 9 from 9 to 7 +move 1 from 3 to 6 +move 2 from 1 to 8 +move 11 from 2 to 4 +move 5 from 6 to 8 +move 1 from 6 to 3 +move 1 from 1 to 4 +move 3 from 8 to 6 +move 3 from 2 to 8 +move 9 from 7 to 9 +move 4 from 4 to 7 +move 1 from 9 to 5 +move 15 from 9 to 7 +move 7 from 8 to 3 +move 1 from 5 to 6 +move 2 from 6 to 9 +move 8 from 2 to 6 +move 3 from 4 to 3 +move 1 from 2 to 5 +move 4 from 9 to 3 +move 1 from 3 to 4 +move 13 from 6 to 2 +move 1 from 5 to 1 +move 4 from 4 to 9 +move 6 from 3 to 2 +move 11 from 2 to 7 +move 6 from 3 to 4 +move 3 from 3 to 2 +move 1 from 3 to 4 +move 1 from 1 to 3 +move 3 from 9 to 2 +move 1 from 3 to 1 +move 4 from 7 to 1 +move 1 from 9 to 5 +move 5 from 1 to 4 +move 11 from 2 to 4 +move 1 from 5 to 3 +move 1 from 2 to 3 +move 12 from 4 to 2 +move 2 from 7 to 2 +move 7 from 4 to 3 +move 5 from 4 to 1 +move 7 from 7 to 6 +move 4 from 1 to 8 +move 1 from 8 to 5 +move 8 from 3 to 2 +move 4 from 7 to 4 +move 13 from 7 to 1 +move 2 from 8 to 6 +move 5 from 4 to 9 +move 1 from 3 to 6 +move 1 from 5 to 8 +move 1 from 2 to 9 +move 4 from 2 to 6 +move 2 from 8 to 6 +move 10 from 1 to 3 +move 4 from 9 to 4 +move 2 from 1 to 3 +move 5 from 2 to 9 +move 4 from 9 to 2 +move 1 from 1 to 2 +move 13 from 2 to 4 +move 15 from 4 to 5 +move 3 from 6 to 8 +move 8 from 3 to 8 +move 1 from 4 to 2 +move 14 from 5 to 1 +move 1 from 5 to 4 +move 1 from 4 to 2 +move 8 from 6 to 7 +move 3 from 6 to 2 +move 2 from 9 to 1 +move 8 from 8 to 7 +move 9 from 1 to 5 +move 7 from 5 to 3 +move 14 from 7 to 9 +move 2 from 2 to 3 +move 7 from 2 to 1 +move 1 from 6 to 1 +move 4 from 9 to 2 +move 8 from 3 to 6 +move 2 from 4 to 3 +move 4 from 3 to 5 +move 5 from 5 to 7 +move 2 from 6 to 9 +move 6 from 6 to 2 +move 4 from 2 to 3 +move 1 from 6 to 2 +move 2 from 7 to 8 +move 13 from 9 to 5 +move 2 from 7 to 1 +move 14 from 1 to 5 +move 15 from 5 to 7 +move 3 from 8 to 7 +move 5 from 3 to 5 +move 6 from 5 to 7 +move 4 from 1 to 7 +move 1 from 2 to 5 +move 3 from 2 to 8 +move 11 from 5 to 2 +move 10 from 7 to 1 +move 1 from 3 to 4 +move 10 from 2 to 9 +move 1 from 5 to 8 +move 6 from 7 to 3 +move 1 from 4 to 6 +move 2 from 3 to 8 +move 1 from 2 to 1 +move 4 from 3 to 9 +move 3 from 1 to 6 +move 2 from 7 to 1 +move 1 from 5 to 6 +move 1 from 3 to 8 +move 4 from 1 to 4 +move 5 from 2 to 9 +move 3 from 1 to 4 +move 18 from 9 to 7 +move 4 from 8 to 4 +move 3 from 1 to 2 +move 1 from 9 to 7 +move 1 from 4 to 7 +move 1 from 6 to 2 +move 1 from 2 to 5 +move 25 from 7 to 3 +move 7 from 4 to 2 +move 8 from 7 to 9 +move 4 from 8 to 6 +move 1 from 8 to 5 +move 4 from 6 to 5 +move 2 from 9 to 5 +move 3 from 5 to 8 +move 4 from 6 to 4 +move 12 from 3 to 5 +move 11 from 3 to 2 +move 13 from 5 to 8 +move 4 from 9 to 6 +move 7 from 4 to 9 +move 2 from 6 to 2 +move 12 from 2 to 7 +move 1 from 6 to 3 +move 1 from 5 to 6 +move 2 from 5 to 3 +move 15 from 8 to 6 +move 4 from 6 to 7 +move 1 from 5 to 1 +move 10 from 2 to 8 +move 8 from 8 to 3 +move 8 from 6 to 8 +move 2 from 7 to 6 +move 9 from 9 to 7 +move 8 from 8 to 9 +move 1 from 1 to 3 +move 1 from 2 to 7 +move 7 from 3 to 1 +move 3 from 8 to 5 +move 3 from 1 to 6 +move 7 from 9 to 2 +move 2 from 3 to 7 +move 5 from 7 to 9 +move 17 from 7 to 5 +move 2 from 7 to 6 +move 10 from 6 to 3 +move 1 from 1 to 3 +move 6 from 9 to 3 +move 1 from 2 to 9 +move 2 from 7 to 9 +move 2 from 9 to 7 +move 1 from 5 to 8 +move 1 from 8 to 5 +move 6 from 2 to 5 +move 1 from 6 to 1 +move 5 from 3 to 5 +move 1 from 6 to 8 +move 1 from 7 to 9 +move 2 from 9 to 3 +move 15 from 5 to 2 +move 2 from 1 to 8 +move 2 from 3 to 7 +move 2 from 8 to 3 +move 3 from 5 to 9 +move 1 from 8 to 6 +move 1 from 9 to 6 +move 3 from 7 to 6 +move 17 from 3 to 4 +move 1 from 1 to 2 +move 6 from 2 to 9 +move 16 from 4 to 1 +move 4 from 6 to 8 +move 9 from 5 to 6 +move 8 from 6 to 2 +move 2 from 9 to 5 +move 2 from 3 to 5 +move 1 from 6 to 2 +move 1 from 4 to 8 +move 14 from 1 to 3 +move 8 from 5 to 3 +move 20 from 3 to 1 +move 1 from 8 to 2 +move 1 from 9 to 6 +move 1 from 6 to 7 +move 1 from 7 to 3 +move 22 from 1 to 2 +move 3 from 3 to 6 +move 27 from 2 to 8 +move 2 from 2 to 8 +move 2 from 6 to 9 +move 2 from 9 to 4 +move 2 from 4 to 8 +move 1 from 1 to 3 +move 14 from 8 to 5 +move 1 from 3 to 9 +move 3 from 9 to 2 +move 5 from 2 to 8 +move 10 from 2 to 9 +move 1 from 6 to 7 +move 1 from 7 to 5 +move 7 from 5 to 2 +move 2 from 9 to 2 +move 1 from 6 to 2 +move 2 from 9 to 5 +move 3 from 5 to 6 +move 6 from 5 to 3 +move 1 from 5 to 6 +move 4 from 3 to 9 +move 2 from 9 to 8 +move 3 from 9 to 5 +move 23 from 8 to 1 +move 2 from 6 to 1 +move 1 from 5 to 7 +move 2 from 3 to 5 +move 2 from 9 to 5 +move 4 from 9 to 7 +move 2 from 9 to 4 +move 1 from 5 to 4 +move 5 from 8 to 5 +move 2 from 6 to 2 +move 3 from 7 to 3 +move 1 from 3 to 4 +move 3 from 2 to 8 +move 4 from 1 to 6 +move 2 from 6 to 3 +move 4 from 1 to 2 +move 3 from 8 to 1 +move 13 from 2 to 5 +move 4 from 3 to 2 +move 14 from 5 to 7 +move 5 from 2 to 7 +move 18 from 7 to 9 +move 4 from 4 to 7 +move 2 from 5 to 4 +move 17 from 9 to 5 +move 1 from 9 to 1 +move 1 from 7 to 2 +move 5 from 7 to 2 +move 18 from 1 to 4 +move 1 from 7 to 3 +move 1 from 3 to 6 +move 2 from 1 to 3 +move 1 from 6 to 5 +move 2 from 6 to 8 +move 1 from 8 to 9 +move 1 from 8 to 3 +move 13 from 4 to 5 +move 1 from 1 to 6 +move 3 from 2 to 4 +move 1 from 6 to 1 +move 3 from 2 to 9 +move 3 from 3 to 1 +move 5 from 4 to 5 +move 30 from 5 to 3 +move 1 from 4 to 6 +move 1 from 9 to 8 +move 1 from 9 to 6 +move 21 from 3 to 7 +move 3 from 1 to 6 +move 1 from 1 to 4 +move 1 from 9 to 6 +move 1 from 8 to 2 +move 1 from 3 to 6 +move 1 from 9 to 3 +move 5 from 4 to 8 +move 1 from 2 to 4 +move 9 from 5 to 7 +move 2 from 5 to 9 +move 2 from 8 to 2 +move 2 from 6 to 3 +move 1 from 4 to 1 +move 4 from 3 to 8 +move 2 from 9 to 2 +move 4 from 2 to 6 +move 1 from 1 to 4 +move 2 from 6 to 9 +move 2 from 5 to 4 +move 1 from 3 to 1 +move 1 from 1 to 3 +move 2 from 9 to 1 +move 5 from 3 to 5 +move 1 from 1 to 8 +move 4 from 6 to 4 +move 5 from 5 to 6 +move 18 from 7 to 5 +move 1 from 3 to 4 +move 12 from 7 to 5 +move 15 from 5 to 6 +move 1 from 5 to 8 +move 1 from 3 to 7 +move 1 from 1 to 2 +move 1 from 2 to 4 +move 1 from 7 to 9 +move 2 from 8 to 2 +move 1 from 2 to 4 +move 4 from 4 to 2 +move 1 from 2 to 1 +move 1 from 9 to 8 +move 4 from 6 to 4 +move 3 from 2 to 6 +move 1 from 2 to 6 +move 8 from 4 to 3 +move 1 from 1 to 3 +move 6 from 6 to 1 +move 1 from 3 to 6 +move 5 from 1 to 7 +move 10 from 5 to 9 +move 3 from 9 to 8 +move 7 from 6 to 2 +move 1 from 7 to 8 +move 3 from 5 to 8 +move 3 from 6 to 2 +move 6 from 8 to 9 +move 1 from 5 to 3 +move 2 from 3 to 1 +move 2 from 4 to 8 +move 6 from 6 to 9 +move 1 from 1 to 4 +move 17 from 9 to 2 +move 1 from 4 to 1 +move 2 from 7 to 8 +move 1 from 9 to 8 +move 3 from 8 to 4 +move 3 from 1 to 4 +move 9 from 8 to 2 +move 1 from 8 to 4 +move 12 from 2 to 7 +move 4 from 7 to 4 +move 1 from 8 to 1 +move 10 from 4 to 2 +move 3 from 3 to 2 +move 1 from 9 to 7 +move 11 from 7 to 3 +move 1 from 3 to 1 +move 2 from 3 to 9 +move 1 from 3 to 7 +move 2 from 1 to 9 +move 1 from 6 to 5 +move 7 from 3 to 6 +move 1 from 7 to 3 +move 3 from 3 to 4 +move 1 from 5 to 7 +move 2 from 4 to 3 +move 2 from 4 to 8 +move 1 from 7 to 6 +move 2 from 6 to 8 +move 1 from 9 to 2 +move 1 from 9 to 5 +move 1 from 5 to 1 +move 1 from 8 to 6 +move 1 from 3 to 2 +move 4 from 6 to 1 +move 5 from 1 to 4 +move 11 from 2 to 4 +move 2 from 8 to 2 +move 1 from 8 to 9 +move 27 from 2 to 5 +move 4 from 6 to 3 +move 3 from 2 to 4 +move 2 from 5 to 9 +move 1 from 5 to 7 +move 2 from 9 to 5 +move 14 from 4 to 7 +move 2 from 4 to 7 +move 3 from 4 to 8 +move 4 from 3 to 1 +move 4 from 1 to 8 +move 2 from 3 to 9 +move 2 from 9 to 3 +move 7 from 8 to 9 +move 1 from 3 to 8 +move 2 from 3 to 2 +move 25 from 5 to 9 +move 1 from 5 to 8 +move 1 from 8 to 7 +move 26 from 9 to 1 +move 23 from 1 to 5 +move 7 from 9 to 7 +move 1 from 9 to 8 +move 1 from 9 to 2 +move 5 from 7 to 1 +move 20 from 5 to 6 +move 1 from 7 to 6 +move 2 from 5 to 3 +move 1 from 8 to 6 +move 21 from 6 to 8 +move 1 from 6 to 4 +move 1 from 1 to 7 +move 2 from 1 to 6 +move 1 from 1 to 3 +move 1 from 2 to 5 +move 1 from 2 to 6 +move 2 from 7 to 6 +move 6 from 7 to 9 +move 3 from 1 to 2 +move 17 from 8 to 1 +move 1 from 4 to 1 +move 2 from 6 to 9 +move 3 from 8 to 9 +move 2 from 3 to 7 +move 2 from 9 to 8 +move 4 from 7 to 3 +move 4 from 3 to 4 +move 2 from 5 to 8 +move 4 from 8 to 4 +move 3 from 6 to 8 +move 18 from 1 to 5 +move 1 from 3 to 4 +move 3 from 2 to 4 +move 5 from 9 to 1 +move 10 from 7 to 5 +move 5 from 1 to 3 +move 5 from 3 to 5 +move 5 from 4 to 3 +move 2 from 4 to 2 +move 5 from 8 to 3 +move 25 from 5 to 2 +move 3 from 3 to 6 +move 1 from 1 to 3 +move 3 from 6 to 7 +move 1 from 4 to 2 +move 1 from 5 to 8 +move 2 from 4 to 9 +move 1 from 8 to 1 +move 20 from 2 to 7 +move 10 from 7 to 1 +move 1 from 1 to 7 +move 4 from 7 to 8 +move 5 from 5 to 4 +move 4 from 8 to 6 +move 1 from 1 to 3 +move 5 from 7 to 4 +move 2 from 1 to 5 +move 4 from 9 to 1 +move 3 from 2 to 5 +move 5 from 5 to 1 +move 1 from 9 to 1 +move 11 from 1 to 3 +move 1 from 6 to 2 +move 7 from 3 to 5 +move 11 from 3 to 7 +move 1 from 2 to 6 +move 7 from 7 to 8 +move 1 from 9 to 1 +move 2 from 3 to 1 +move 1 from 5 to 3 +move 4 from 1 to 6 +move 4 from 6 to 3 +move 9 from 4 to 5 +move 2 from 8 to 2 +move 4 from 6 to 9 +move 3 from 2 to 4 +move 1 from 8 to 6 + diff --git a/rust/day5/src/main.rs b/rust/day5/src/main.rs new file mode 100644 index 0000000..8ec547b --- /dev/null +++ b/rust/day5/src/main.rs @@ -0,0 +1,54 @@ +use std::fs::read_to_string; + +fn analyse(str: &String) -> (u32, Vec<(u32, u32, u32)>, Vec>) { + // Initializing some values. + let mut info: Vec<_> = str.split("\r\n").collect(); + let mut crates: &[&str] = &[""]; + let mut cmd: &[&str] = &[""]; + let mut crates_str: Vec> = Vec::new(); + let mut commands_tuple: Vec<(u32, u32, u32)> = Vec::new(); + + // Spliting the str into a cmd part, and crates part. + for (i, txt) in info.iter().enumerate() { + if txt.len() == 0 { + info.remove(i); + (crates, cmd) = info.split_at(i); + break; + } + } + // Gathering the horizontal number of crates + let max_crates: Vec = crates + .last() + .unwrap() + .to_string() + .split_whitespace() + .map(|str| str.parse().unwrap()) + .collect(); + + // Gathering each crate Letters + for (i, str) in crates.iter().enumerate() { + if i == crates.len()-1 { + break; + } + crates_str.push(str.split_whitespace().collect()); + } + + // Rearanging commands as simplier datatypes to process. + for str in cmd { + let str_temp : Vec<&str> = str.split_whitespace().collect(); + let tuple_temp : Vec> = str_temp.iter().map_while(|str| Some(str.parse().ok())).collect(); + commands_tuple.push((tuple_temp[1].unwrap(), tuple_temp[3].unwrap(), tuple_temp[5].unwrap())); + } + + // Returning every info as a tuple + ( + max_crates.iter().max().unwrap().to_owned(), + commands_tuple.to_owned(), + crates_str.to_owned() + ) +} +fn main() { + let file_content = read_to_string("exemple").unwrap(); + let (max, cmd, crates) = analyse(&file_content); + println!("max = {}\ncmd = {:?}\ncrates = {:?}", max, cmd, crates); +}