Initial commit

This commit is contained in:
hal8174 2024-12-02 22:47:47 +01:00
commit 4e5012e63e
9 changed files with 2093 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/target

7
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 = "adventofcode2024"
version = "0.1.0"

6
Cargo.toml Normal file
View file

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

1000
input/01-1.in Normal file

File diff suppressed because it is too large Load diff

6
input/02-0.in Normal file
View file

@ -0,0 +1,6 @@
7 6 4 2 1
1 2 7 8 9
9 7 6 2 1
1 3 2 4 5
8 6 4 4 1
1 3 6 7 9

1000
input/02-1.in Normal file

File diff suppressed because it is too large Load diff

22
src/bin/01.rs Normal file
View file

@ -0,0 +1,22 @@
fn main() {
let text = std::fs::read_to_string("input/01-1.in").unwrap();
let (mut vec1, mut vec2) = text
.trim()
.lines()
.map(|l| l.split_once(" ").unwrap())
.map(|(a, b)| (a.parse::<u32>().unwrap(), b.parse::<u32>().unwrap()))
.collect::<(Vec<_>, Vec<_>)>();
vec1.sort();
vec2.sort();
let sum = vec1
.iter()
.zip(vec2.iter())
.map(|(&a, &b)| a.abs_diff(b))
.sum::<u32>();
println!("{}", sum);
}

50
src/bin/02.rs Normal file
View file

@ -0,0 +1,50 @@
fn main() {
let text = std::fs::read_to_string("input/02-1.in").unwrap();
let t = text
.lines()
.filter(|l| {
let mut f = l.split(' ').map(|c| c.parse::<u32>().unwrap()).peekable();
let mut last = f.next().unwrap();
let ascending = *f.peek().unwrap() > last;
for c in f {
if !(1..=3).contains(&c.abs_diff(last)) || (c > last) != ascending {
return false;
}
last = c;
}
true
})
.count();
println!("{}", t);
let t = text
.lines()
.filter(|l| {
let o = l
.split(' ')
.map(|c| c.parse::<usize>().unwrap())
.collect::<Vec<_>>();
(0..o.len()).any(|i| {
let f = o
.iter()
.enumerate()
.filter_map(|(j, v)| if i != j { Some(v) } else { None });
let mut f = f.peekable();
let mut last = f.next().unwrap();
let ascending = f.peek().unwrap() > &last;
for c in f {
if !(1..=3).contains(&c.abs_diff(*last)) || (c > last) != ascending {
return false;
}
last = c;
}
true
})
})
.count();
println!("{}", t);
}

1
src/main.rs Normal file
View file

@ -0,0 +1 @@
fn main() {}