solve year 2023 day 06 & rewrite number parsing to be generic

This commit is contained in:
2023-12-06 08:10:19 +01:00
parent 46165b1acb
commit f2506f91ba
13 changed files with 174 additions and 61 deletions

View File

@@ -1,7 +1,7 @@
use crate::util::parse::ParseExt;
fn calories(input: &str) -> impl Iterator<Item = u32> + '_ {
input.split("\n\n").map(|set| set.u32s().sum())
input.split("\n\n").map(|set| set.unsigned::<u32>().sum())
}
pub fn part1(input: &str) -> impl std::fmt::Display {

View File

@@ -4,7 +4,7 @@ fn solve(input: &str, filter: fn(u32, u32, u32, u32) -> bool) -> usize {
input
.lines()
.filter_map(|line| {
let mut nums = line.u32s();
let mut nums = line.unsigned::<u32>();
if (filter)(nums.next()?, nums.next()?, nums.next()?, nums.next()?) {
Some(())

View File

@@ -2,7 +2,7 @@ use crate::util::parse::ParseExt;
fn parse(input: &str) -> Option<(Vec<Vec<char>>, impl Iterator<Item = [u32; 3]> + '_)> {
let (board, moveset) = input.split_once("\n\n")?;
let size = board.lines().last()?.u32s().count();
let size = board.lines().last()?.unsigned::<u32>().count();
let mut crates: Vec<Vec<char>> = vec![vec![]; size + 1];
board.lines().for_each(|line| {
@@ -22,7 +22,7 @@ fn parse(input: &str) -> Option<(Vec<Vec<char>>, impl Iterator<Item = [u32; 3]>
}
let moves = moveset.lines().filter_map(|line| {
let mut nums = line.u32s();
let mut nums = line.unsigned();
Some([nums.next()?, nums.next()?, nums.next()?])
});