2022 rust add test cases
This commit is contained in:
parent
63a1ed45c2
commit
4bd02db8cd
|
@ -3,5 +3,5 @@ mod solutions;
|
|||
|
||||
|
||||
fn main() {
|
||||
solutions::day04::run();
|
||||
solutions::day05::run();
|
||||
}
|
||||
|
|
|
@ -10,11 +10,12 @@ pub fn run() -> () {
|
|||
println!("Part 2: {}", solve2(&data));
|
||||
}
|
||||
|
||||
|
||||
fn solve1(data: &Vec<Vec<i32>>) -> i32 {
|
||||
data.iter().map(|xs| xs.iter().sum::<i32>()).max().unwrap()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[inline(always)]
|
||||
fn insert(arr: &mut [i32; 3], to_insert: i32) {
|
||||
if to_insert > arr[2] {
|
||||
for idx in (0..3).rev() {
|
||||
|
@ -40,7 +41,6 @@ fn solve2(data: &Vec<Vec<i32>>) -> i32 {
|
|||
three.iter().sum()
|
||||
}
|
||||
|
||||
|
||||
fn parse_data(data: Vec<String>) -> Vec<Vec<i32>> {
|
||||
data.iter()
|
||||
.fold(vec![vec![]], | mut acc, next| {
|
||||
|
@ -54,3 +54,31 @@ fn parse_data(data: Vec<String>) -> Vec<Vec<i32>> {
|
|||
acc
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
fn data() -> Vec<&'static str> {
|
||||
vec![
|
||||
"1000", "2000", "3000", "",
|
||||
"4000", "",
|
||||
"5000", "6000", "",
|
||||
"7000", "8000", "9000", "",
|
||||
"10000",
|
||||
]
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part1() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(24000, solve1(&data));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part2() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(45000, solve2(&data));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -121,3 +121,25 @@ fn parse_data(data: Vec<String>) -> Vec<(char, char)> {
|
|||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
fn data() -> Vec<&'static str> {
|
||||
vec!["A Y", "B X", "C Z"]
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part1() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(15, solve1(&data));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part2() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(12, solve2(&data));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,3 +58,32 @@ fn parse_data(data: Vec<String>) -> Vec<(HashSet<char>, HashSet<char>)> {
|
|||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
fn data() -> Vec<&'static str> {
|
||||
vec![
|
||||
"vJrwpWtwJgWrhcsFMMfFFhFp",
|
||||
"jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL",
|
||||
"PmmdzqPrVvPwwTWBwg",
|
||||
"wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn",
|
||||
"ttgJtRGJQctTZtZT",
|
||||
"CrZsJsPPZsGzwwsLwLmpwMDw"
|
||||
]
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part1() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(157, solve1(&data));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part2() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(70, solve2(&data));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,3 +47,25 @@ fn parse_data(data: Vec<String>) -> Vec<((i32, i32), (i32, i32))> {
|
|||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
fn data() -> Vec<&'static str> {
|
||||
vec!["2-4,6-8", "2-3,4-5", "5-7,7-9", "2-8,3-7", "6-6,4-6", "2-6,4-8"]
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part1() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(2, solve1(&data));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part2() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(4, solve2(&data));
|
||||
}
|
||||
}
|
||||
|
|
46
2022/rust/src/solutions/day05.rs
Normal file
46
2022/rust/src/solutions/day05.rs
Normal file
|
@ -0,0 +1,46 @@
|
|||
use crate::utils;
|
||||
|
||||
|
||||
pub fn run() -> () {
|
||||
let data = parse_data(utils::read_lines(utils::Source::Scratch));
|
||||
|
||||
println!("Day 5");
|
||||
println!("Part 1: {}", solve1(&data));
|
||||
println!("Part 2: {}", solve2(&data));
|
||||
}
|
||||
|
||||
|
||||
fn solve1(data: &()) -> i32 {
|
||||
1
|
||||
}
|
||||
|
||||
fn solve2(data: &()) -> i32 {
|
||||
2
|
||||
}
|
||||
|
||||
|
||||
fn parse_data(data: Vec<String>) -> () {
|
||||
()
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
fn data() -> Vec<&'static str> {
|
||||
vec![""]
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part1() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(1, solve1(&data));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part2() {
|
||||
let data = parse_data(data().into_iter().map(String::from).collect());
|
||||
assert_eq!(2, solve2(&data));
|
||||
}
|
||||
}
|
|
@ -2,3 +2,4 @@ pub mod day01;
|
|||
pub mod day02;
|
||||
pub mod day03;
|
||||
pub mod day04;
|
||||
pub mod day05;
|
||||
|
|
Loading…
Reference in a new issue