Skip to content

Commit 5d39d9c

Browse files
committed
Tidy
1 parent 2d67cc0 commit 5d39d9c

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

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)