2023-15: Implement part one
This commit is contained in:
parent
186f9802b7
commit
50e0578690
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7
|
|
@ -0,0 +1,25 @@
|
||||||
|
pub mod part_one;
|
||||||
|
// pub mod part_two;
|
||||||
|
// pub mod common;
|
||||||
|
|
||||||
|
use crate::utils::solution::Solution;
|
||||||
|
use crate::utils::input_reader;
|
||||||
|
|
||||||
|
pub struct DaySolution ;
|
||||||
|
|
||||||
|
|
||||||
|
impl Solution for DaySolution {
|
||||||
|
|
||||||
|
fn input_path(&self) -> &'static str {
|
||||||
|
"input/2023/day_15/input.txt"
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part_one(&self) -> String {
|
||||||
|
input_reader::read_input_file(self.input_path(), part_one::part_one)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part_two(&self) -> String {
|
||||||
|
// input_reader::read_input_file(self.input_path(), part_two::part_two)
|
||||||
|
String::from("Not implemented")
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
pub fn part_one(input_lines: Vec<String>) -> String {
|
||||||
|
|
||||||
|
let mut full_line: String = String::new();
|
||||||
|
for line in input_lines {
|
||||||
|
full_line.push_str(&line);
|
||||||
|
}
|
||||||
|
|
||||||
|
let init_sequences = full_line.split(',').collect::<Vec<&str>>();
|
||||||
|
let mut result = 0;
|
||||||
|
|
||||||
|
for seq in init_sequences {
|
||||||
|
result += hash_sequence(seq);
|
||||||
|
}
|
||||||
|
|
||||||
|
result.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn hash_sequence(sequence: &str) -> usize {
|
||||||
|
|
||||||
|
let mut hash = 0;
|
||||||
|
for c in sequence.chars() {
|
||||||
|
hash += c as usize;
|
||||||
|
hash *= 17;
|
||||||
|
hash %= 256;
|
||||||
|
}
|
||||||
|
|
||||||
|
hash
|
||||||
|
}
|
|
@ -12,6 +12,7 @@ pub mod day_11_cosmic_expantion;
|
||||||
pub mod day_12_hot_springs;
|
pub mod day_12_hot_springs;
|
||||||
pub mod day_13_point_of_incidence;
|
pub mod day_13_point_of_incidence;
|
||||||
pub mod day_14_parabolic_reflector_dish;
|
pub mod day_14_parabolic_reflector_dish;
|
||||||
|
pub mod day_15_lens_library;
|
||||||
|
|
||||||
pub fn run(day: &str) {
|
pub fn run(day: &str) {
|
||||||
let solution: Box<dyn Solution> = match day {
|
let solution: Box<dyn Solution> = match day {
|
||||||
|
@ -27,6 +28,7 @@ pub fn run(day: &str) {
|
||||||
"12" => Box::new(day_12_hot_springs::DaySolution),
|
"12" => Box::new(day_12_hot_springs::DaySolution),
|
||||||
"13" => Box::new(day_13_point_of_incidence::DaySolution),
|
"13" => Box::new(day_13_point_of_incidence::DaySolution),
|
||||||
"14" => Box::new(day_14_parabolic_reflector_dish::DaySolution),
|
"14" => Box::new(day_14_parabolic_reflector_dish::DaySolution),
|
||||||
|
"15" => Box::new(day_15_lens_library::DaySolution),
|
||||||
_ => panic!("Invalid day specified"),
|
_ => panic!("Invalid day specified"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue