Day 1
This commit is contained in:
commit
8350d5d70b
5 changed files with 2051 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
/target
|
||||
Cargo.lock
|
8
Cargo.toml
Normal file
8
Cargo.toml
Normal file
|
@ -0,0 +1,8 @@
|
|||
[package]
|
||||
name = "aoc2021"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
2000
input/01a.txt
Normal file
2000
input/01a.txt
Normal file
File diff suppressed because it is too large
Load diff
33
src/bin/01.rs
Normal file
33
src/bin/01.rs
Normal file
|
@ -0,0 +1,33 @@
|
|||
const INPUT: &str = include_str!("../../input/01a.txt");
|
||||
|
||||
fn main() {
|
||||
let nums = input();
|
||||
let count = count_increases(nums);
|
||||
println!("First solution: {}", count);
|
||||
|
||||
let input: Vec<i32> = input().collect();
|
||||
let nums = input.windows(3).map(|w| w.iter().sum());
|
||||
let count = count_increases(nums);
|
||||
println!("Second solution: {}", count);
|
||||
}
|
||||
|
||||
fn count_increases(it: impl Iterator<Item = i32>) -> usize {
|
||||
let mut count = 0;
|
||||
let mut prev = None;
|
||||
|
||||
for n in it {
|
||||
if let Some(prev) = prev {
|
||||
if n > prev {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
|
||||
prev = Some(n);
|
||||
}
|
||||
|
||||
count
|
||||
}
|
||||
|
||||
fn input() -> impl Iterator<Item = i32> {
|
||||
INPUT.lines().map(|l| l.parse::<i32>().unwrap())
|
||||
}
|
8
src/lib.rs
Normal file
8
src/lib.rs
Normal file
|
@ -0,0 +1,8 @@
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
#[test]
|
||||
fn it_works() {
|
||||
let result = 2 + 2;
|
||||
assert_eq!(result, 4);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue