diff options
Diffstat (limited to 'day23/day23-1.js')
-rw-r--r-- | day23/day23-1.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/day23/day23-1.js b/day23/day23-1.js new file mode 100644 index 0000000..8427cb4 --- /dev/null +++ b/day23/day23-1.js @@ -0,0 +1,33 @@ +const data = require('./data') +let cups = data.split('').map(n => parseInt(n)) +let current = cups[0] + +const move = () => { + const i = cups.indexOf(current) + const picked = cups.slice(i+1,i+4) + const rest = [...cups.slice(0, i+1), ...cups.slice(i+4)] + const dest = (nr) => { + if (picked.includes(nr)) { + return dest(nr-1) + } else if (nr < Math.min(...rest)) { + return dest(Math.max(...cups)) + } + return nr + } + + rest.splice(rest.indexOf(dest(current-1)) + 1, 0, ...picked) + const rest1 = rest.slice(0, rest.indexOf(current)) + const rest2 = rest.slice(rest.indexOf(current)) + cups = [...rest2, ...rest1] + current = cups[cups.indexOf(current)+1] +} + +for(let j=1; j<=100; j++) { + move() +} + +const cups1 = cups.slice(0, cups.indexOf(1)) +const cups2 = cups.slice(cups.indexOf(1)) +cups = [...cups2, ...cups1] + +console.log('Answer: ', cups.slice(1).join('')) |