Compare commits
2 commits
35c23272cb
...
4cfa88e64a
Author | SHA1 | Date | |
---|---|---|---|
4cfa88e64a | |||
d701eb0ce5 |
4 changed files with 92 additions and 1 deletions
8
.gitignore
vendored
8
.gitignore
vendored
|
@ -3,4 +3,10 @@ target
|
||||||
l1.json
|
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
7
2024/day5/part1/Cargo.lock
generated
Normal 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"
|
6
2024/day5/part1/Cargo.toml
Normal file
6
2024/day5/part1/Cargo.toml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "part1"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
72
2024/day5/part1/src/main.rs
Normal file
72
2024/day5/part1/src/main.rs
Normal 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)
|
||||||
|
}
|
Loading…
Reference in a new issue