Skip to content

Commit

Permalink
Merge pull request #124 from amclin/feat/2020-day-03
Browse files Browse the repository at this point in the history
Feat/2020 day 03
  • Loading branch information
amclin authored Dec 7, 2020
2 parents 072038c + dfbfec2 commit 2ce56c4
Show file tree
Hide file tree
Showing 5 changed files with 443 additions and 0 deletions.
33 changes: 33 additions & 0 deletions 2020/day-03/airportRoute.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
const queryPosition = ({ map, position }) => {
// check vertical position
const row = map.rows[position[1]]
// check horizontal which repeats
return row[(position[0] % row.length)]
}

const positionHasTree = ({ map, position }) => {
return (queryPosition({ map, position }) === '#')
}

const countTreesOnRoute = ({
map,
start = [0, 0],
slope = [3, 1]
}) => {
let treeCount = 0
const position = start
const advance = () => {
position[0] += slope[0]
position[1] += slope[1]
}
while (position[1] < map.rows.length) {
if (positionHasTree({ map, position })) treeCount++
advance()
}
return treeCount
}

module.exports = {
countTreesOnRoute,
positionHasTree
}
39 changes: 39 additions & 0 deletions 2020/day-03/airportRoute.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/* eslint-env mocha */
const { expect } = require('chai')
const { positionHasTree, countTreesOnRoute } = require('./airportRoute')
const testData = [
'..##.......',
'#...#...#..',
'.#....#..#.',
'..#.#...#.#',
'.#...##..#.',
'..#.##.....',
'.#.#.#....#',
'.#........#',
'#.##...#...',
'#...##....#',
'.#..#...#.#'
]

describe('--- Day 3: Toboggan Trajectory ---', () => {
describe('Part 1', () => {
describe('positionHasTree()', () => {
it('can find a tree', () => {
expect(positionHasTree({ map: { rows: testData }, position: [4, 5] })).to.equal(true)
expect(positionHasTree({ map: { rows: testData }, position: [8, 9] })).to.equal(false)
})
it('can handle the horizontal terrain repeat', () => {
expect(positionHasTree({ map: { rows: testData }, position: [25, 5] })).to.equal(false)
})
})
describe('countTreesOnRoute()', () => {
it('tallies the number of trees on the route', () => {
expect(
countTreesOnRoute({
map: { rows: testData }
})
).to.equal(7)
})
})
})
})
1 change: 1 addition & 0 deletions 2020/day-03/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require('./solution')
Loading

0 comments on commit 2ce56c4

Please sign in to comment.