Skip to content

Instantly share code, notes, and snippets.

@cranderveldt
Last active December 8, 2020 21:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cranderveldt/f1b87222f07dd461f1e63ce7aa143f4a to your computer and use it in GitHub Desktop.
Save cranderveldt/f1b87222f07dd461f1e63ce7aa143f4a to your computer and use it in GitHub Desktop.
Advent of Code 2020 Day 3
const puzzleInput = ``
// Part 1
const parseInput = (input) => {
return input.split('\n')
}
const traverse = (rows, colInc, rowInc = 1) => {
return rows.reduce((acc, row, index) => {
if (index % rowInc !== 0) { return acc }
const position = (index / rowInc) * colInc % row.length
return acc + +(row[position] === '#')
}, 0)
}
const partOne = (input) => {
const rows = parseInput(input)
const treeCount = traverse(rows, 3)
console.log(treeCount)
}
partOne(puzzleInput)
// Part 2
const partTwo = (input) => {
const rows = parseInput(input)
const slopes = [
[1, 1],
[3, 1],
[5, 1],
[7, 1],
[1, 2],
]
const treeCount = slopes.reduce((acc, [colInc, rowInc]) => acc * traverse(rows, colInc, rowInc), 1)
console.log(treeCount)
}
partTwo(puzzleInput)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment