adventofcode-2017/day16/part2.js

20 lines
706 B
JavaScript
Raw Normal View History

2017-12-16 12:12:56 +00:00
var items = "abcdefghijklmnop".split("");
s = (i) => {items = items.splice(-i).concat(items);}
x = (a,b) => {[items[a], items[b]] = [items[b], items[a]]}
p = (a,b) => {x(items.indexOf(a), items.indexOf(b))}
var input = require("fs").readFileSync("input.txt").toString().replace("\n", "");
var input = "," + input + ",";
var expr = input.replace(/,/g, ");").replace(/;([sxp])/g, ";$1(").replace(/([a-z])\/([a-z])/g, "'$1'/'$2'").replace(/\//g, ",");
expr = expr.substring(2);
var state = "";
var states = [];
while(states.indexOf(state) == -1){
states.push(state);
eval(expr);
state = items.join("");
}
states = states.filter((a)=>(a));
var num = 1000000000;
console.log(states[(num-1)%states.length]);