Added day 1
This commit is contained in:
commit
dfb79ce0ee
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/target
|
7
Cargo.lock
generated
Normal file
7
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 = "aoc2015"
|
||||
version = "0.1.0"
|
256
Cargo.toml
Normal file
256
Cargo.toml
Normal file
|
@ -0,0 +1,256 @@
|
|||
[package]
|
||||
name = "aoc2015"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d1-1"
|
||||
path = "src/day1/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d1-2"
|
||||
path = "src/day1/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d2-1"
|
||||
path = "src/day2/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d2-2"
|
||||
path = "src/day2/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d3-1"
|
||||
path = "src/day3/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d3-2"
|
||||
path = "src/day3/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d4-1"
|
||||
path = "src/day4/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d4-2"
|
||||
path = "src/day4/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d5-1"
|
||||
path = "src/day5/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d5-2"
|
||||
path = "src/day5/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d6-1"
|
||||
path = "src/day6/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d6-2"
|
||||
path = "src/day6/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d7-1"
|
||||
path = "src/day7/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d7-2"
|
||||
path = "src/day7/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d8-1"
|
||||
path = "src/day8/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d8-2"
|
||||
path = "src/day8/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d9-1"
|
||||
path = "src/day9/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d9-2"
|
||||
path = "src/day9/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d10-1"
|
||||
path = "src/day10/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d10-2"
|
||||
path = "src/day10/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d11-1"
|
||||
path = "src/day11/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d11-2"
|
||||
path = "src/day11/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d12-1"
|
||||
path = "src/day12/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d12-2"
|
||||
path = "src/day12/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d13-1"
|
||||
path = "src/day13/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d13-2"
|
||||
path = "src/day13/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d14-1"
|
||||
path = "src/day14/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d14-2"
|
||||
path = "src/day14/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d15-1"
|
||||
path = "src/day15/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d15-2"
|
||||
path = "src/day15/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d16-1"
|
||||
path = "src/day16/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d16-2"
|
||||
path = "src/day16/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d17-1"
|
||||
path = "src/day17/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d17-2"
|
||||
path = "src/day17/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d18-1"
|
||||
path = "src/day18/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d18-2"
|
||||
path = "src/day18/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d19-1"
|
||||
path = "src/day19/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d19-2"
|
||||
path = "src/day19/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d20-1"
|
||||
path = "src/day20/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d20-2"
|
||||
path = "src/day20/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d21-1"
|
||||
path = "src/day21/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d21-2"
|
||||
path = "src/day21/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d22-1"
|
||||
path = "src/day22/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d22-2"
|
||||
path = "src/day22/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d23-1"
|
||||
path = "src/day23/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d23-2"
|
||||
path = "src/day23/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d24-1"
|
||||
path = "src/day24/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d24-2"
|
||||
path = "src/day24/2.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d25-1"
|
||||
path = "src/day25/1.rs"
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "d25-2"
|
||||
path = "src/day25/2.rs"
|
50
src/day1/1.rs
Normal file
50
src/day1/1.rs
Normal file
|
@ -0,0 +1,50 @@
|
|||
#![feature(test)]
|
||||
extern crate test;
|
||||
|
||||
const INPUTS: [&str; 2] = [include_str!("./sample.txt"), include_str!("./input.txt")];
|
||||
|
||||
fn parse(input: &'static str) -> Vec<char> {
|
||||
input.trim().chars().collect()
|
||||
}
|
||||
|
||||
fn solution(input: Vec<char>) -> i64 {
|
||||
let mut answer = 0;
|
||||
|
||||
for c in input {
|
||||
match c {
|
||||
'(' => answer += 1,
|
||||
')' => answer -= 1,
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
answer
|
||||
}
|
||||
|
||||
fn main() {
|
||||
for input in INPUTS.iter() {
|
||||
let output = parse(input);
|
||||
let output = solution(output);
|
||||
println!("{output}");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn solution_test() {
|
||||
assert_eq!(solution("(())".chars().collect()), 0);
|
||||
assert_eq!(solution("()()".chars().collect()), 0);
|
||||
assert_eq!(solution("(((".chars().collect()), 3);
|
||||
assert_eq!(solution("(()(()(".chars().collect()), 3);
|
||||
assert_eq!(solution("))(((((".chars().collect()), 3);
|
||||
assert_eq!(solution("())".chars().collect()), -1);
|
||||
assert_eq!(solution(")())())".chars().collect()), -3);
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn solution_bench(b: &mut test::Bencher) {
|
||||
b.iter(|| {
|
||||
let input = parse(INPUTS[1]);
|
||||
let result = solution(input);
|
||||
test::black_box(result);
|
||||
})
|
||||
}
|
49
src/day1/2.rs
Normal file
49
src/day1/2.rs
Normal file
|
@ -0,0 +1,49 @@
|
|||
#![feature(test)]
|
||||
extern crate test;
|
||||
|
||||
const INPUTS: [&str; 2] = [include_str!("./sample.txt"), include_str!("./input.txt")];
|
||||
|
||||
fn parse(input: &'static str) -> Vec<char> {
|
||||
input.trim().chars().collect()
|
||||
}
|
||||
|
||||
fn solution(input: Vec<char>) -> usize {
|
||||
let mut answer = 0;
|
||||
|
||||
for (i, c) in input.into_iter().enumerate() {
|
||||
match c {
|
||||
'(' => answer += 1,
|
||||
')' => answer -= 1,
|
||||
_ => unreachable!(),
|
||||
}
|
||||
|
||||
if answer < 0 {
|
||||
return i + 1;
|
||||
}
|
||||
}
|
||||
|
||||
0
|
||||
}
|
||||
|
||||
fn main() {
|
||||
for input in INPUTS.iter() {
|
||||
let output = parse(input);
|
||||
let output = solution(output);
|
||||
println!("{output}");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn solution_test() {
|
||||
assert_eq!(solution(")".chars().collect()), 1);
|
||||
assert_eq!(solution("()())".chars().collect()), 5);
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn solution_bench(b: &mut test::Bencher) {
|
||||
b.iter(|| {
|
||||
let input = parse(INPUTS[1]);
|
||||
let result = solution(input);
|
||||
test::black_box(result);
|
||||
})
|
||||
}
|
1
src/day1/input.txt
Normal file
1
src/day1/input.txt
Normal file
File diff suppressed because one or more lines are too long
1
src/day1/sample.txt
Normal file
1
src/day1/sample.txt
Normal file
|
@ -0,0 +1 @@
|
|||
)())())
|
Loading…
Reference in New Issue
Block a user