Added day 1

This commit is contained in:
Ishan Jain 2022-12-31 22:53:11 +05:30
commit dfb79ce0ee
Signed by: ishan
GPG Key ID: 0506DB2A1CC75C27
7 changed files with 365 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 = "aoc2015"
version = "0.1.0"

256
Cargo.toml Normal file
View 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
View 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
View 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

File diff suppressed because one or more lines are too long

1
src/day1/sample.txt Normal file
View File

@ -0,0 +1 @@
)())())