Skip to content

Commit 7bee4d2

Browse files
committed
Tidy
1 parent 2d67cc0 commit 7bee4d2

File tree

3 files changed

+32
-26
lines changed

3 files changed

+32
-26
lines changed

src/main.rs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use aoc::util::parse::*;
33
use aoc::*;
44
use std::env::args;
55
use std::fs::read_to_string;
6-
use std::iter::empty;
76
use std::time::{Duration, Instant};
87

98
fn main() {
@@ -13,18 +12,23 @@ fn main() {
1312
let mut iter = args.iter().flat_map(|arg| arg.iter_unsigned::<u32>());
1413
let (year, day) = (iter.next(), iter.next());
1514

15+
let solutions = [
16+
year2015(),
17+
year2016(),
18+
year2017(),
19+
year2018(),
20+
year2019(),
21+
year2020(),
22+
year2021(),
23+
year2022(),
24+
year2023(),
25+
year2024(),
26+
];
27+
1628
// Filter solutions then pretty print output.
17-
let (stars, duration) = empty()
18-
.chain(year2015())
19-
.chain(year2016())
20-
.chain(year2017())
21-
.chain(year2018())
22-
.chain(year2019())
23-
.chain(year2020())
24-
.chain(year2021())
25-
.chain(year2022())
26-
.chain(year2023())
27-
.chain(year2024())
29+
let (stars, duration) = solutions
30+
.iter()
31+
.flatten()
2832
.filter(|solution| year.is_none_or(|y| y == solution.year))
2933
.filter(|solution| day.is_none_or(|d| d == solution.day))
3034
.fold((0, Duration::ZERO), |(stars, duration), Solution { year, day, wrapper }| {

src/year2023/day16.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ impl BitSet {
5858
}
5959

6060
fn union(&mut self, other: &BitSet) {
61-
self.bits.iter_mut().zip(other.bits.iter()).for_each(|(a, b)| *a |= b);
61+
self.bits.iter_mut().zip(&other.bits).for_each(|(a, b)| *a |= b);
6262
}
6363

6464
fn size(&self) -> u32 {
@@ -236,8 +236,8 @@ fn strong_connect(graph: &mut Graph, position: Point) -> usize {
236236
{
237237
let other = &graph.nodes[next];
238238
node.tiles.union(&other.tiles);
239-
node.from.extend(other.from.iter());
240-
node.to.extend(other.to.iter());
239+
node.from.extend(&other.from);
240+
node.to.extend(&other.to);
241241
}
242242

243243
// Mark node as done.

src/year2023/day23.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ pub fn part1(input: &Input) -> u32 {
209209

210210
for y in 0..6 {
211211
for x in 0..6 {
212-
let left = if x == 0 { 0 } else { total[y][x - 1] + input.horizontal[y][x - 1] };
213-
let above = if y == 0 { 0 } else { total[y - 1][x] + input.vertical[y - 1][x] };
212+
let left = if x > 0 { total[y][x - 1] + input.horizontal[y][x - 1] } else { 0 };
213+
let above = if y > 0 { total[y - 1][x] + input.vertical[y - 1][x] } else { 0 };
214214
total[y][x] = left.max(above);
215215
}
216216
}
@@ -255,15 +255,17 @@ pub fn part2(input: &Input) -> u32 {
255255
for ((row, gap), steps) in current.drain() {
256256
for &(next_row, next_gap, horizontal, vertical) in &graph[&row] {
257257
// Only 1 gap total is allowed, otherwise we can make a longer path.
258-
if !(gap && next_gap) {
259-
// The bit sets represent the horizonal and vertical moves from the
260-
// previous row.
261-
let extra = horizontal.biterator().map(|x| input.horizontal[y][x]).sum::<u32>()
262-
+ vertical.biterator().map(|x| input.vertical[y][x]).sum::<u32>();
263-
264-
let e = next.entry((next_row, gap || next_gap)).or_insert(0);
265-
*e = (*e).max(steps + extra);
258+
if gap && next_gap {
259+
continue;
266260
}
261+
262+
// The bit sets represent the horizontal and vertical moves from the previous row.
263+
let extra = horizontal.biterator().map(|x| input.horizontal[y][x]).sum::<u32>()
264+
+ vertical.biterator().map(|x| input.vertical[y][x]).sum::<u32>();
265+
266+
// De-duplicate states so that each row has at most 76 states.
267+
let e = next.entry((next_row, gap || next_gap)).or_insert(0);
268+
*e = (*e).max(steps + extra);
267269
}
268270
}
269271

@@ -274,7 +276,7 @@ pub fn part2(input: &Input) -> u32 {
274276
input.extra + current[&(end, true)]
275277
}
276278

277-
/// Convert maze to unidrected graph.
279+
/// Convert maze to undirected graph.
278280
fn compress(input: &str) -> Graph {
279281
let mut grid = Grid::parse(input);
280282
let width = grid.width;

0 commit comments

Comments
 (0)