days 1-3
This commit is contained in:
Generated
+54
@@ -0,0 +1,54 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "1.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "day02"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.6.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.10.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-automata",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
|
||||
@@ -0,0 +1,7 @@
|
||||
[package]
|
||||
name = "day02"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
regex = "1.10.2"
|
||||
@@ -0,0 +1,61 @@
|
||||
use regex::Regex;
|
||||
use std::io::{stdin, BufRead};
|
||||
|
||||
type Rgb = (usize, usize, usize);
|
||||
const THRESHOLD: Rgb = (12, 13, 14);
|
||||
|
||||
fn main() {
|
||||
let re = Regex::new(r"\d+ (b|r|g)").unwrap();
|
||||
let input = stdin().lock().lines().map(|l| l.unwrap());
|
||||
let mut id_sum = 0;
|
||||
let mut water_sum = 0;
|
||||
|
||||
for (i, line) in input.enumerate() {
|
||||
let mut possible = true;
|
||||
|
||||
let mut max_rgb = (0, 0, 0);
|
||||
for line_sect in line.split(';') {
|
||||
let mut rgb = (0, 0, 0);
|
||||
|
||||
let games = re
|
||||
.find_iter(line_sect)
|
||||
.map(|l| {
|
||||
let temp = l.as_str().split_once(' ').unwrap();
|
||||
(temp.0.parse::<usize>().unwrap(), temp.1)
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
for game in games.iter() {
|
||||
match game.1 {
|
||||
"r" => rgb.0 = game.0,
|
||||
"g" => rgb.1 = game.0,
|
||||
"b" => rgb.2 = game.0,
|
||||
_ => (),
|
||||
}
|
||||
if rgb.0 > max_rgb.0 {
|
||||
max_rgb.0 = rgb.0;
|
||||
}
|
||||
|
||||
if rgb.1 > max_rgb.1 {
|
||||
max_rgb.1 = rgb.1;
|
||||
}
|
||||
|
||||
if rgb.2 > max_rgb.2 {
|
||||
max_rgb.2 = rgb.2;
|
||||
}
|
||||
|
||||
if possible && rgb.0 > THRESHOLD.0 || rgb.1 > THRESHOLD.1 || rgb.2 > THRESHOLD.2 {
|
||||
possible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let pow = max_rgb.0 * max_rgb.1 * max_rgb.2;
|
||||
water_sum += pow;
|
||||
|
||||
if possible {
|
||||
id_sum += i + 1;
|
||||
}
|
||||
}
|
||||
println!("P1: {}, P2: {}", id_sum, water_sum);
|
||||
}
|
||||
Reference in New Issue
Block a user