From 595f4ba264bfb58a8e3acfcbb6df488cd0cefddf Mon Sep 17 00:00:00 2001 From: JonOfUs Date: Fri, 15 Dec 2023 17:11:47 +0100 Subject: [PATCH] prepare days --- res/16/example | 0 res/17/example | 0 res/18/example | 0 res/19/example | 0 res/20/example | 0 res/21/example | 0 res/22/example | 0 res/23/example | 0 res/24/example | 0 res/25/example | 0 src/days/d02.rs | 11 ++++--- src/days/d12.rs | 2 +- src/days/d15.rs | 3 -- src/days/d16.rs | 18 +++++++++++ src/days/d17.rs | 18 +++++++++++ src/days/d18.rs | 18 +++++++++++ src/days/d19.rs | 18 +++++++++++ src/days/d20.rs | 18 +++++++++++ src/days/d21.rs | 18 +++++++++++ src/days/d22.rs | 18 +++++++++++ src/days/d23.rs | 18 +++++++++++ src/days/d24.rs | 18 +++++++++++ src/days/d25.rs | 18 +++++++++++ src/main.rs | 84 ++++++++++++++++++++++++++++++++++++++----------- 24 files changed, 253 insertions(+), 27 deletions(-) create mode 100644 res/16/example create mode 100644 res/17/example create mode 100644 res/18/example create mode 100644 res/19/example create mode 100644 res/20/example create mode 100644 res/21/example create mode 100644 res/22/example create mode 100644 res/23/example create mode 100644 res/24/example create mode 100644 res/25/example create mode 100644 src/days/d16.rs create mode 100644 src/days/d17.rs create mode 100644 src/days/d18.rs create mode 100644 src/days/d19.rs create mode 100644 src/days/d20.rs create mode 100644 src/days/d21.rs create mode 100644 src/days/d22.rs create mode 100644 src/days/d23.rs create mode 100644 src/days/d24.rs create mode 100644 src/days/d25.rs diff --git a/res/16/example b/res/16/example new file mode 100644 index 0000000..e69de29 diff --git a/res/17/example b/res/17/example new file mode 100644 index 0000000..e69de29 diff --git a/res/18/example b/res/18/example new file mode 100644 index 0000000..e69de29 diff --git a/res/19/example b/res/19/example new file mode 100644 index 0000000..e69de29 diff --git a/res/20/example b/res/20/example new file mode 100644 index 0000000..e69de29 diff --git a/res/21/example b/res/21/example new file mode 100644 index 0000000..e69de29 diff --git a/res/22/example b/res/22/example new file mode 100644 index 0000000..e69de29 diff --git a/res/23/example b/res/23/example new file mode 100644 index 0000000..e69de29 diff --git a/res/24/example b/res/24/example new file mode 100644 index 0000000..e69de29 diff --git a/res/25/example b/res/25/example new file mode 100644 index 0000000..e69de29 diff --git a/src/days/d02.rs b/src/days/d02.rs index 9641cfd..4cfc959 100644 --- a/src/days/d02.rs +++ b/src/days/d02.rs @@ -1,6 +1,8 @@ use regex::Regex; use std::fs; +use rayon::prelude::*; + pub fn solve() { let path = "res/02/input"; @@ -13,7 +15,9 @@ pub fn solve() { let result: usize = contents .lines() - .map(|line| { + .enumerate() + .par_bridge() + .map(|(i, line)| { let re = Regex::new(r"(\d+) (\w+)").unwrap(); let mut col_max = [0, 0, 0]; for cap in re.captures_iter(line) { @@ -27,9 +31,8 @@ pub fn solve() { _ => {} } } - col_max + (i, col_max) }) - .enumerate() .filter(|(_, [r, g, b])| *r <= MAX_R && *g <= MAX_G && *b <= MAX_B) .map(|(i, _)| i + 1) .sum(); @@ -37,7 +40,7 @@ pub fn solve() { println!("Result 1: {}", result); let result: usize = contents - .lines() + .par_lines() .map(|line| { let re = Regex::new(r"(\d+) (\w+)").unwrap(); let mut col_max = [0, 0, 0]; diff --git a/src/days/d12.rs b/src/days/d12.rs index e7570fd..f352d8f 100644 --- a/src/days/d12.rs +++ b/src/days/d12.rs @@ -29,7 +29,7 @@ pub fn solve() { println!("Result 1: {result}"); let result: usize = contents - .lines() + .par_lines() .map(|line| { let (springs_str, nums_str) = line.split_once(" ").unwrap(); let nums_tmp: Vec = nums_str diff --git a/src/days/d15.rs b/src/days/d15.rs index 79ef0a1..e5b2334 100644 --- a/src/days/d15.rs +++ b/src/days/d15.rs @@ -42,9 +42,6 @@ pub fn solve() { } } } - - dbg!(&boxes); - let result: usize = boxes .iter() .map(|(k, v)| { diff --git a/src/days/d16.rs b/src/days/d16.rs new file mode 100644 index 0000000..e3af137 --- /dev/null +++ b/src/days/d16.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/16/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/days/d17.rs b/src/days/d17.rs new file mode 100644 index 0000000..5ee1d63 --- /dev/null +++ b/src/days/d17.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/17/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/days/d18.rs b/src/days/d18.rs new file mode 100644 index 0000000..2576a99 --- /dev/null +++ b/src/days/d18.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/18/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/days/d19.rs b/src/days/d19.rs new file mode 100644 index 0000000..0b508ff --- /dev/null +++ b/src/days/d19.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/19/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/days/d20.rs b/src/days/d20.rs new file mode 100644 index 0000000..5af3cd8 --- /dev/null +++ b/src/days/d20.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/20/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/days/d21.rs b/src/days/d21.rs new file mode 100644 index 0000000..f4ab24e --- /dev/null +++ b/src/days/d21.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/21/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/days/d22.rs b/src/days/d22.rs new file mode 100644 index 0000000..fe489d0 --- /dev/null +++ b/src/days/d22.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/22/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/days/d23.rs b/src/days/d23.rs new file mode 100644 index 0000000..393b64b --- /dev/null +++ b/src/days/d23.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/23/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/days/d24.rs b/src/days/d24.rs new file mode 100644 index 0000000..27c5ae7 --- /dev/null +++ b/src/days/d24.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/24/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/days/d25.rs b/src/days/d25.rs new file mode 100644 index 0000000..bff5e0d --- /dev/null +++ b/src/days/d25.rs @@ -0,0 +1,18 @@ +use std::fs; + +pub fn solve() { + let path = "res/25/example"; + + let mut _contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + let result: usize = 0; + + println!("Result 1: {result}"); + + + let result: usize = 0; + + println!("Result 2: {result}"); +} diff --git a/src/main.rs b/src/main.rs index 8d6dc4c..dfe5791 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,73 +9,119 @@ fn main() { //_all_days() } +#[allow(unreachable_code, unused)] fn _all_days() { let start = Instant::now(); + let mut time = start.clone(); println!("\nDay 1"); days::d01::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 2"); days::d02::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 3"); days::d03::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 4"); days::d04::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 5"); days::d05::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 6"); days::d06::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 7"); days::d07::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 8"); days::d08::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 9"); days::d09::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 10"); days::d10::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 11"); days::d11::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 12"); days::d12::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 13"); days::d13::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 14"); days::d14::solve(); - print_elapsed(&start); + time = _print_elapsed(time); println!("\nDay 15"); days::d15::solve(); - print_elapsed(&start); + time = _print_elapsed(time); + + println!("\nDay 16"); + days::d16::solve(); + time = _print_elapsed(time); + + /* + println!("\nDay 17"); + days::d17::solve(); + time = _print_elapsed(time); + + println!("\nDay 18"); + days::d18::solve(); + time = _print_elapsed(time); + + println!("\nDay 19"); + days::d19::solve(); + time = _print_elapsed(time); + + println!("\nDay 20"); + days::d20::solve(); + time = _print_elapsed(time); + + println!("\nDay 21"); + days::d21::solve(); + time = _print_elapsed(time); + + println!("\nDay 22"); + days::d22::solve(); + time = _print_elapsed(time); + + println!("\nDay 23"); + days::d23::solve(); + time = _print_elapsed(time); + + println!("\nDay 24"); + days::d24::solve(); + time = _print_elapsed(time); + + println!("\nDay 25"); + days::d25::solve(); + _print_elapsed(time);*/ + + println!("\nTotal elapsed: {}ms", start.elapsed().as_millis()) } -fn print_elapsed(start: &Instant) { +fn _print_elapsed(time: Instant) -> Instant { println!( " Elapsed: {}.{}ms", - start.elapsed().as_millis(), - start.elapsed().as_micros() % 1000 - ) + time.elapsed().as_millis(), + time.elapsed().as_micros() % 1000 + ); + Instant::now() }