Add benches for 2020/03
This commit is contained in:
parent
f12a78dae4
commit
7a8d2983af
@ -56,9 +56,10 @@ fn main() {
|
|||||||
println!("Part 2: {}", p2);
|
println!("Part 2: {}", p2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(unused)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use test;
|
use test::{self, black_box};
|
||||||
|
|
||||||
const INPUT: &str = "..##.......
|
const INPUT: &str = "..##.......
|
||||||
#...#...#..
|
#...#...#..
|
||||||
@ -72,15 +73,67 @@ mod tests {
|
|||||||
#...##....#
|
#...##....#
|
||||||
.#..#...#.#";
|
.#..#...#.#";
|
||||||
|
|
||||||
|
fn count_trees_imperative(forest: &Forest, step_right: usize, step_down: usize) -> usize {
|
||||||
|
let mut x = 0;
|
||||||
|
let mut y = 0;
|
||||||
|
let mut trees = 0;
|
||||||
|
let width = forest[0].len();
|
||||||
|
while y < forest.len() {
|
||||||
|
trees += (forest[y][x] == Tile::Tree) as usize;
|
||||||
|
y += step_down;
|
||||||
|
x = (x + step_right) % width;
|
||||||
|
}
|
||||||
|
return trees;
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn part1_test() {
|
fn part1_test_functional() {
|
||||||
let forest = parse_input(INPUT);
|
let forest = parse_input(INPUT);
|
||||||
assert_eq!(count_trees(&forest, STEP_RIGHT[1], STEP_DOWN[1]), 7);
|
assert_eq!(count_trees(&forest, STEP_RIGHT[1], STEP_DOWN[1]), 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_test_imperative() {
|
||||||
|
let forest = parse_input(INPUT);
|
||||||
|
assert_eq!(count_trees_imperative(&forest, STEP_RIGHT[1], STEP_DOWN[1]), 7);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn part2_test() {
|
fn part2_test() {
|
||||||
let forest = parse_input(INPUT);
|
let forest = parse_input(INPUT);
|
||||||
assert_eq!(count_all_paths(&forest), 336);
|
assert_eq!(count_all_paths(&forest), 336);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bench_input_parsing(b: &mut test::Bencher) {
|
||||||
|
let raw = read_input();
|
||||||
|
b.iter(|| {
|
||||||
|
let forest = parse_input(black_box(&raw));
|
||||||
|
assert_eq!(forest.len(), 323);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bench_part_1_functional(b: &mut test::Bencher) {
|
||||||
|
let forest = parse_input(&read_input());
|
||||||
|
b.iter(|| {
|
||||||
|
assert_eq!(count_trees(&forest, STEP_RIGHT[1], STEP_DOWN[1]), 187);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bench_part_1_imperative(b: &mut test::Bencher) {
|
||||||
|
let forest = parse_input(&read_input());
|
||||||
|
b.iter(|| {
|
||||||
|
assert_eq!(count_trees_imperative(&forest, STEP_RIGHT[1], STEP_DOWN[1]), 187);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bench_part_2(b: &mut test::Bencher) {
|
||||||
|
let forest = parse_input(&read_input());
|
||||||
|
b.iter(|| {
|
||||||
|
let p2 = count_all_paths(&forest);
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user