Skip to content

Instantly share code, notes, and snippets.

@vladkosinov
Last active December 3, 2022 10:44
Show Gist options
  • Save vladkosinov/fefe67da5b528b62afd37e17a78ae8d2 to your computer and use it in GitHub Desktop.
Save vladkosinov/fefe67da5b528b62afd37e17a78ae8d2 to your computer and use it in GitHub Desktop.
advent 2023
A = Rock
B = Paper
C = Scissors
X = Rock = 1
Y = Paper = 2
Z = Scissors = 3
PART 1
A X = 3 + 1 = 4
A Y = 6 + 2 = 8
A Z = 0 + 3 = 3
B X = 0 + 1 = 1
B Y = 3 + 2 = 5
B Z = 6 + 3 = 9
C X = 6 + 1 = 7
C Y = 0 + 2 = 2
C Z = 3 + 3 = 6
PART 2
X = lose
Y = draw
Z = win
A Y = 3 + 1 = 4
A Z = 6 + 2 = 8
A X = 0 + 3 = 3
B X = 0 + 1 = 1
B Y = 3 + 2 = 5
B Z = 6 + 3 = 9
C Z = 6 + 1 = 7
C X = 0 + 2 = 2
C Y = 3 + 3 = 6
codeOfCapitalA = 'A'.charCodeAt(0)
codeOfA = 'a'.charCodeAt(0)
getPriority = (c) => c.charCodeAt(0) - (c.charCodeAt(0) < codeOfA ? codeOfCapitalA - 27 : codeOfA - 1)
// part 1
x.map(items => {
x1 = items.slice(0, items.length / 2).split('')
x2 = items.slice(items.length / 2).split('')
dup = x1.find(item => x2.indexOf(item) !== -1);
return getPriority(dup)
}).reduce((sum, p) => sum + p, 0)
// part 2
codeOfCapitalA = 'A'.charCodeAt(0)
codeOfA = 'a'.charCodeAt(0)
getPriority = (c) => c.charCodeAt(0) - (c.charCodeAt(0) < codeOfA ? codeOfCapitalA - 27 : codeOfA - 1)
groups = []
for (let i = 0; i < x.length; i += 3) {
groups.push(x.slice(i, i + 3))
}
groups.map(group => {
dup = group[0].find(i => group[1].indexOf(i) !== -1 && group[2].indexOf(i) !== -1)
return getPriority(dup)
}).reduce((sum, p) => sum + p, 0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment