Public
Edited
Dec 7, 2022
1 fork
Importers
1 star
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
rucksacks = splitIntoLines(input)
Insert cell
compartments = rucksacks.map(splitAtMiddle)
Insert cell
duplicatePerCompartment = compartments.map(getFirstDuplicateFromGroup)
Insert cell
priorities = duplicatePerCompartment.map(getPriority)
Insert cell
totalPriority = R.sum(priorities)
Insert cell
Insert cell
groups = R.splitEvery(3, rucksacks)
Insert cell
badges = groups.map(getFirstDuplicateFromGroup)
Insert cell
badgePriorities = badges.map(getPriority)
Insert cell
totalBadgePriority = R.sum(badgePriorities)
Insert cell
Insert cell
findDuplicates = (sets) => [...sets[0]].filter(x => sets.every(set => set.has(x)))
Insert cell
getPriority = s => {
const code = s.charCodeAt(0)
return code >= 97 ? code - 96 : code - 64 + 26
}
Insert cell
getFirstDuplicateFromGroup = R.pipe(R.map(asSet), findDuplicates, R.head)
Insert cell
asSet = x => new Set(x)
Insert cell
splitAtMiddle = s => R.splitAt(s.length / 2, s)
Insert cell
splitIntoLines = (string) => string.trim().split('\n')
Insert cell
Insert cell
import {adventOfCodeHeader, renderInput} from '@senritsu/advent-of-code-2022'
Insert cell
R = import('ramda')
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more