wip: day13

This commit is contained in:
Matej Janezic 2023-12-13 13:18:00 +01:00
parent 0000024016
commit 000002500f
Signed by: janezicmatej
GPG Key ID: 4298E230ED37B2C0
2 changed files with 66 additions and 0 deletions

15
data/examples/13.txt Normal file
View File

@ -0,0 +1,15 @@
#.##..##.
..#.##.#.
##......#
##......#
..#.##.#.
..##..##.
#.#.##.#.
#...##..#
#....#..#
..##..###
#####.##.
#####.##.
..##..###
#....#..#

51
src/bin/13.rs Normal file
View File

@ -0,0 +1,51 @@
fn mirror_h(shape: &Vec<Vec<char>>) -> Option<usize> {
(1..(shape.len() - 1))
.filter(|&i| {
shape
.iter()
.skip(i)
.zip(shape.iter().take(i).rev())
.all(|(x, y)| x.iter().zip(y.iter()).all(|(xx, yy)| xx == yy))
})
.max()
}
fn mirror_v(shape: &Vec<Vec<char>>) -> Option<usize> {
let shape = (0..shape[0].len())
.map(|col| (0..shape.len()).map(|row| shape[row][col]).collect())
.collect();
mirror_h(&shape)
}
pub fn part_one(input: &str) -> Option<usize> {
Some(
input
.split("\n\n")
.map(|x| x.lines().map(|line| line.chars().collect()).collect())
.map(|shape| {
let v = mirror_v(&shape).unwrap_or(0);
let h = mirror_h(&shape).unwrap_or(0) * 100;
v + h
})
.sum(),
)
}
pub fn part_two(_input: &str) -> Option<usize> {
None
}
aoc::solution!(13);
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_part_one() {
assert_eq!(part_one(&aoc::template::read_file("examples", 13)), None);
}
#[test]
fn test_part_two() {
assert_eq!(part_two(&aoc::template::read_file("examples", 13)), None);
}
}