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