Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const input = document.querySelector("body > pre").innerHTML.slice(0, -1).split("\n").map(a => {
- return a[0] == "c" ? "c," + a.split(" ")[1] : a[5] == "i" ? "a,0" : "b," + a.split(" ")[3];
- }).map(a => [a.split(",")[0], Number(a.split(",")[1])])
- let deck = Array(10007).fill("").map((_, a) => a)
- const copy = x => { let y = JSON.parse(JSON.stringify(x)); y.__proto__ = Object.getPrototypeOf(x); return y }
- const dealNew = x => copy(x).map((_, a, b) => b[b.length - a - 1])
- function cutN(deck, n) {
- let oldDeck = copy(deck)
- let emptyDeck = oldDeck.splice(n > 0 ? n : n < 0 ? oldDeck.length + n : 0)
- return emptyDeck.concat(oldDeck)
- }
- function dealN(deck, n) {
- let emptyDeck = Array(deck.length)
- for (let i = 0, len = deck.length; i < len; i++) {
- emptyDeck[(i * n) % len] = deck[i]
- }
- return emptyDeck
- }
- for (let i = 0; i < input.length; i++) {
- switch (input[i][0]) {
- case "a":
- deck = dealNew(deck)
- break;
- case "b":
- deck = dealN(deck, input[i][1])
- break;
- case "c":
- deck = cutN(deck, input[i][1])
- break;
- }
- }
- console.log("Part 1: ", deck.indexOf(2019))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement