Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. const input = document.querySelector("body > pre").innerHTML.slice(0, -1).split("\n").map(a => {
  2. return a[0] == "c" ? "c," + a.split(" ")[1] : a[5] == "i" ? "a,0" : "b," + a.split(" ")[3];
  3. }).map(a => [a.split(",")[0], Number(a.split(",")[1])])
  4. let deck = Array(10007).fill("").map((_, a) => a)
  5.  
  6. const copy = x => { let y = JSON.parse(JSON.stringify(x)); y.__proto__ = Object.getPrototypeOf(x); return y }
  7.  
  8. const dealNew = x => copy(x).map((_, a, b) => b[b.length - a - 1])
  9.  
  10. function cutN(deck, n) {
  11. let oldDeck = copy(deck)
  12. let emptyDeck = oldDeck.splice(n > 0 ? n : n < 0 ? oldDeck.length + n : 0)
  13. return emptyDeck.concat(oldDeck)
  14. }
  15.  
  16. function dealN(deck, n) {
  17. let emptyDeck = Array(deck.length)
  18. for (let i = 0, len = deck.length; i < len; i++) {
  19. emptyDeck[(i * n) % len] = deck[i]
  20. }
  21. return emptyDeck
  22. }
  23. for (let i = 0; i < input.length; i++) {
  24. switch (input[i][0]) {
  25. case "a":
  26. deck = dealNew(deck)
  27. break;
  28. case "b":
  29. deck = dealN(deck, input[i][1])
  30. break;
  31. case "c":
  32. deck = cutN(deck, input[i][1])
  33. break;
  34. }
  35. }
  36.  
  37. console.log("Part 1: ", deck.indexOf(2019))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement