Skip to content

Instantly share code, notes, and snippets.

@adler3d
Last active December 27, 2017 10:42
Show Gist options
  • Save adler3d/6a1e1b537f68acedb54ffb52873e7aeb to your computer and use it in GitHub Desktop.
Save adler3d/6a1e1b537f68acedb54ffb52873e7aeb to your computer and use it in GitHub Desktop.
var w={
f:1,
h:3,
z:5,
p:6,
L:4,
a:3
};
var map_vals=m=>Object.keys(m).map(k=>m[k]);
var wv=map_vals(w);
var ks={
ps:"fp",
44:"fL",
sv:"fa",
kk:"Lh",
od:"hza"
};
for(var k in ks)ks[k]=ks[k].split("").map(e=>Object.keys(w).indexOf(e));
var ksv=map_vals(ks);
var rs=[];
for(var k=0;k<5;k++)for(var i=1;i<=5;i++)rs.push({n:i,k:k});
var way2str=arr=>{
return arr.map(e=>({n:e.n,k:Object.keys(ks)[e.k]}));
};
var clone=w=>w.slice();
var use=(w,cmd)=>{
var out=clone(w);
ksv[cmd.k].forEach(e=>out[e]+=cmd.n);
return out;
};
var done=obj=>{
var q=obj[0];
for(var e=0;e<6;e++)if(obj[e]!=q)return false;
return true;
};
var bad=obj=>{
for(var e=0;e<6;e++)if(obj[e]>12)return true;
return false;
};
var clock=Date;var t=clock.now();
console.log("bef");
var iter=0;var dropped=0;
var func=(wv,d,way)=>{
iter++;
if(bad(wv)){dropped++;return;}
if(iter%(1024*512)==0)console.log(JSON.stringify({t:clock.now()-t,drop:dropped,iter:iter,spd:iter/(clock.now()-t),wv:wv,d:d}));
if(done(wv)){console.log(JSON.stringify({win:"yes",wv:wv,d:d,way:way2str(way)},0,2));throw Error("done");return;}
if(!d)return;
rs.forEach(e=>func(use(wv,e),d-1,way.concat(e)));
};
func(wv,6,[]);
console.log("fail");
return "fail";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment