Compare commits

..

2 commits

Author SHA1 Message Date
4cfa88e64a idk 2024-12-06 19:56:52 +00:00
d701eb0ce5 day 5 part 1 2024-12-06 19:56:39 +00:00
4 changed files with 92 additions and 1 deletions

6
.gitignore vendored
View file

@ -4,3 +4,9 @@ l1.json
l2.json l2.json
list.txt list.txt
input.txt input.txt
input1.txt
input2.txt
input3.txt
input4.txt
input5.txt
inputexample.txt

7
2024/day5/part1/Cargo.lock generated Normal file
View file

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "part1"
version = "0.1.0"

View file

@ -0,0 +1,6 @@
[package]
name = "part1"
version = "0.1.0"
edition = "2021"
[dependencies]

View file

@ -0,0 +1,72 @@
use std::fs;
fn main() {
let mut lines: Vec<String> = Vec::new();
// offset so the vec lines can actually start at 1 and not curse me
lines.push("a".parse().unwrap());
for i in fs::read_to_string("input.txt")
.unwrap()
.lines()
.map(String::from) {
lines.push(i);
};
let lineslen = lines.len();
// get the line which is empty to split into the First and Second bit
let mut sep = 0;
for i in 1..lines.len() {
if lines[i].trim() == "" {
println!("the line empty is {}",i);
sep = i;
}
};
let mut rul = Vec::new();
for i in 1..sep {
rul.push(lines[i].clone())
};
println!("rul {:?}",rul);
let mut seq = Vec::new();
for i in sep+1..lineslen {
seq.push(lines[i].clone());
}
println!("seq {:?}",seq);
let mut finalvec: Vec<Vec<i32>> = Vec::new();
'l1: for seq1 in seq {
let seqvec: Vec<i32> = seq1.split(",").map(|a| a.parse().unwrap()).collect();
let mut allow = true;
'l2: for rul2 in rul.clone() {
let rulez: Vec<String> = rul2.split("|").map(|a| a.to_string()).collect();
let r1: i32 = rulez[0].clone().parse().unwrap();
let r2: i32 = rulez[1].clone().parse().unwrap();
if seqvec.contains(&r1) && seqvec.contains(&r2) {
if let Some(pos1) = seqvec.iter().position(|a| a == &r1) {
if let Some(pos2) = seqvec.iter().position(|a| a == &r2) {
if pos1 > pos2 {
println!("not allowed for {:?}, continued!!!!",seq1);
allow = false;
}
}
}
}
}
if allow {
finalvec.push(seqvec)
}
}
for i in &finalvec {
println!("finalvec: {:?}",i)
}
let mut total = 0;
for i in &finalvec {
total += i[i.len()/2]
}
println!("{}",total)
}