Skip to content

Commit 149e7f3

Browse files
committed
feat(day24): part 2
1 parent 938c2cf commit 149e7f3

File tree

2 files changed

+32
-31
lines changed

2 files changed

+32
-31
lines changed

day24/bacterias-recursive.ts

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import * as chalk from 'chalk'
2-
import { toSurface } from './bacterias'
32

43
type Grid = boolean[]
54

@@ -236,9 +235,16 @@ const updateGrid = (world: World, level: number, grid: Grid): Grid => {
236235
)
237236
}
238237

239-
export const simulateBacteriasOnSurface = (world: World): void => {
240-
drawWorld(world, 0)
241-
for (let i = 0; i < 10; i++) {
238+
export const simulateBacteriasOnSurface = (
239+
grid: Grid,
240+
width: number,
241+
minutes = 10,
242+
): number => {
243+
const world = {
244+
levels: [newGrid(width, grid.length), grid, newGrid(width, grid.length)],
245+
width,
246+
}
247+
for (let i = 0; i < minutes; i++) {
242248
const levels = []
243249
for (let k = 0; k < world.levels.length; k++) {
244250
levels[k] = updateGrid(world, k, world.levels[k])
@@ -250,31 +256,7 @@ export const simulateBacteriasOnSurface = (world: World): void => {
250256
levels.push(newGrid(world.width, world.levels[0].length))
251257
}
252258
world.levels = levels
253-
drawWorld(world, i + 1)
254259
}
260+
drawWorld(world, minutes)
261+
return world.levels.reduce((sum, level) => sum + countBacterias(level), 0)
255262
}
256-
257-
simulateBacteriasOnSurface({
258-
levels: [
259-
newGrid(5, 25),
260-
newGrid(5, 25),
261-
newGrid(5, 25),
262-
newGrid(5, 25),
263-
newGrid(5, 25),
264-
newGrid(5, 25),
265-
toSurface(`
266-
....#
267-
#..#.
268-
#.?##
269-
..#..
270-
#....
271-
`),
272-
newGrid(5, 25),
273-
newGrid(5, 25),
274-
newGrid(5, 25),
275-
newGrid(5, 25),
276-
newGrid(5, 25),
277-
newGrid(5, 25),
278-
],
279-
width: 5,
280-
})

day24/day24.solution.spec.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { toSurface, simulateBacteriasOnSurface } from './bacterias'
2+
import { simulateBacteriasOnSurface as simulateBacteriasOnSurfaceRescursive } from './bacterias-recursive'
23

3-
describe('Day 23: Part 1', () => {
4+
describe('Day 24: Part 1', () => {
45
it('should solve the puzzle', async () => {
56
expect(
67
simulateBacteriasOnSurface({
@@ -16,3 +17,21 @@ describe('Day 23: Part 1', () => {
1617
).toEqual(10282017)
1718
})
1819
})
20+
21+
describe('Day 24: Part 2', () => {
22+
it('should solve the puzzle', async () => {
23+
expect(
24+
simulateBacteriasOnSurfaceRescursive(
25+
toSurface(`
26+
.#..#
27+
.#.#.
28+
#..##
29+
.#.##
30+
##..#
31+
`),
32+
5,
33+
200,
34+
),
35+
).toEqual(2065)
36+
})
37+
})

0 commit comments

Comments
 (0)