Skip to content

Instantly share code, notes, and snippets.

@kdiogenes
Created February 19, 2015 23:03
Show Gist options
  • Save kdiogenes/cd69c312f0f38a37c8a9 to your computer and use it in GitHub Desktop.
Save kdiogenes/cd69c312f0f38a37c8a9 to your computer and use it in GitHub Desktop.
javascript: 2048 IA
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('o 1m,1p,T,6,1C,1I,1s,1u,1q,1t,1v,1G,q,1n,X,S,1J,1d,c,s=[].s||g(1B){h(o i=0,l=u.B;i<l;i++){8(i 14 u&&u[i]===1B)e i}e-1};1D.1Z.7=g(1y,17){o p,w,z,F,18,19;8(17==V){17=L}z=u;8(u.1F()){e}p=R 0;F=R 0;19=u.1Y(1y);18=u.1X(19);w=N;u.1V();18.x.1N(g(x){18.y.1N(g(y){o Q,H,O;p={x:x,y:y};F=z.Z.1M(p);8(F){O=z.1W(p,19);H=z.Z.1M(O.H);8(H&&H.P===F.P&&!H.1x){Q=1w 20(O.H,F.P*2);Q.1x=[F,H];z.Z.1U(Q);z.Z.21(F);F.25(O.H);z.r+=Q.P;8(Q.P===22){z.1E=L}}t{z.26(F,O.1Q)}8(!z.1T(p,F)){w=L}}})});8(w&&17){u.1S();8(!u.1R()){u.1P=L}}8(w){u.2c()}e w};S={W:[0,0],d:[1,2],G:[2,3],1z:[3,1]};c=[];1C=g(9){e 1H.2h(1H.2g(9))};T=g(7){o 1i,w;1i=q.2i();w=q.7(7[0],N);c[7[1]]={9:q.Z.9,r:q.r,w:w,1A:7[0]};q.27.2f(1i);e q.2e()};6=g(p){8(p===V){e 0}t{e p.P}};1d=g(9,x,y){o C,D,1h,1e,1b,1g,1j,1k,1f,1l,1o,1c,1a,E;E=0;C=6(9[x][y]);8(C===0){e 0}8(D=x-1,s.v([0,1,2,3],D)>=0){E+=K.M(C-6(9[x-1][y]))*2}8(1h=x+1,s.v([0,1,2,3],1h)>=0){E+=K.M(C-6(9[x+1][y]))*2}8(1g=y-1,s.v([0,1,2,3],1g)>=0){E+=K.M(C-6(9[x][y-1]))*2}8(1j=y+1,s.v([0,1,2,3],1j)>=0){E+=K.M(C-6(9[x][y+1]))*2}8((1k=x-1,s.v([0,1,2,3],1k)>=0)&&(1f=y+1,s.v([0,1,2,3],1f)>=0)){E+=K.M(C-6(9[x-1][y+1]))}8((1l=x+1,s.v([0,1,2,3],1l)>=0)&&(1o=y-1,s.v([0,1,2,3],1o)>=0)){E+=K.M(C-6(9[x+1][y-1]))}8((1c=x-1,s.v([0,1,2,3],1c)>=0)&&(1a=y-1,s.v([0,1,2,3],1a)>=0)){E+=K.M(C-6(9[x-1][y-1]))}8((1e=x+1,s.v([0,1,2,3],1e)>=0)&&(1b=y+1,s.v([0,1,2,3],1b)>=0)){E+=K.M(C-6(9[x+1][y+1]))}e E};1J=g(9){o i,j,k,l,15;15=0;h(i=k=0;k<=3;i=++k){h(j=l=0;l<=3;j=++l){15+=1d(9,i,j)}}e 15/=16};1n=g(){o k,f,7,a;a=[];h(k=0,f=c.B;k<f;k++){7=c[k];8(7[\'r\']===0){a.A(7[\'r\']=1)}t{a.A(R 0)}}e a};1s=g(){o 7,a;a=[];h(7 14 c){8(c[7][\'9\'][0][0]===V){a.A(c[7][\'r\']/=4)}t{a.A(R 0)}}e a};1I=g(){o p,I,Y,k,l,f,U,7,D,a;a=[];h(7 14 c){Y=0;D=c[7].9;h(k=0,f=D.B;k<f;k++){I=D[k];h(l=0,U=I.B;l<U;l++){p=I[l];8(6(p)>Y){Y=6(p)}}}8(6(c[7][\'9\'][0][0])!==Y){a.A(c[7][\'r\']/=4)}t{a.A(R 0)}}e a};1G=g(){o n,b,G,i,j,k,l,7,a,d;n=0;a=[];h(7 14 c){h(i=k=0;k<=2;i=++k){h(j=l=0;l<=2;j=++l){b=c[7][\'9\'][i][j];8(b===V){28}G=c[7][\'9\'][i][j+1];d=c[7][\'9\'][i+1][j];8(6(b)>=6(G)){n+=2k/(6(b)/6(G))}8(6(b)>=6(d)){n+=2l/(6(b)/6(d))}}}a.A(c[7][\'r\']+=n)}e a};1u=g(){o n,b,G,10,j,k,l,f,7,d,J;h(k=0,f=c.B;k<f;k++){7=c[k];n=0;J=L;10=L;h(j=l=0;l<=2;j=++l){b=7[\'9\'][0][j];G=7[\'9\'][0][j+1];d=7[\'9\'][1][j];8(6(b)>=6(d)){8(6(b)===6(d)){n+=0.5*(6(b)+6(d))}}8(6(b)>=6(G)){n+=6(b)+6(G)}t{J=N;10=N;1K}}8(J){b=7[\'9\'][0][3];d=7[\'9\'][1][3];8(6(b)>=6(d)){8(6(b)===6(d)){n+=4*(6(b)+6(d))}t{n+=2*(6(b)+6(d))}}t{10=N}}7[\'r\']+=n}e 10};1v=g(){o n,b,j,k,l,f,7,a,d,J,W;a=[];h(k=0,f=c.B;k<f;k++){7=c[k];n=0;J=L;h(j=l=3;l>=1;j=--l){b=7[\'9\'][1][j];W=7[\'9\'][1][j-1];d=7[\'9\'][2][j];8(6(b)>=6(d)){8(6(b)===6(d)){n+=0.5*(6(b)+6(d))}}8(6(b)>=6(W)){n+=6(b)+6(W)}t{J=N;1K}}8(J){b=7[\'9\'][1][0];d=7[\'9\'][2][0];8(6(b)>=6(d)){8(6(b)===6(d)){n+=4*(6(b)+6(d))}t{n+=2*(6(b)+6(d))}}}a.A(7[\'r\']+=n)}e a};1q=g(){o p,I,11,k,l,f,U,1r,m,7,D,a;a=[];h(k=0,f=c.B;k<f;k++){7=c[k];11=0;D=7[\'9\'];h(l=0,U=D.B;l<U;l++){I=D[l];h(m=0,1r=I.B;m<1r;m++){p=I[m];8(p===V){11+=2}}}a.A(7[\'r\']+=11)}e a};1t=g(){o k,f,7,a;a=[];h(k=0,f=c.B;k<f;k++){7=c[k];8(7[\'w\']===N){a.A(7[\'r\']=0)}t{a.A(R 0)}}e a};1p=g(){1n();8(1u()){1v()}1q();1s();e 1t()};1m=g(){o 12,13,k,f,7;13=-1;12=V;h(k=0,f=c.B;k<f;k++){7=c[k];8(7[\'r\']>13){13=7[\'r\'];12=7[\'1A\']}}e 12};X=g(){T(S[\'W\']);T(S[\'1z\']);T(S[\'d\']);T(S[\'G\']);1p();q.7(1m());8(q.1E){q.29=L;q.2a.2b()}8(q.1F()){e 1L(g(){q.2d();e X()},2m)}t{e 1L(X,2j)}};q=1w 1D(4,1O,23,24);X();',62,147,'||||||cellValue|move|if|cells|results|currentCell|possibleMoves|right|return|len|function|for||||||addToScore|var|cell|gm|score|indexOf|else|this|call|moved|||self|push|length|cv|ref|total|tile|down|next|column|seeSpecial|Math|true|abs|false|positions|value|merged|void|moves|calcPossibleMove|len1|null|up|makeDecision|greaterValue|grid|favorSecond|freeCells|bestMoveCode|bestScore|in|nTotal||addTile|traversals|vector|ref9|ref11|ref8|neighboorhoodSimilarity|ref10|ref5|ref2|ref1|actualState|ref3|ref4|ref6|bestMove|greedy|ref7|calcPoints|favorFreeCells|len2|favorCorner|favorMovement|favorFirstColumn|favorSecondColumn|new|mergedFrom|direction|left|code|item|copyGrid|GameManager|won|isGameTerminated|favorSimilarNeighboors|JSON|favorBiggestCorner|neighboorhoodEntropy|break|setTimeout|cellContent|forEach|KeyboardInputManager|over|farthest|movesAvailable|addRandomTile|positionsEqual|insertTile|prepareTiles|findFarthestPosition|buildTraversals|getVector|prototype|Tile|removeTile|2048|HTMLActuator|LocalStorageManager|updatePosition|moveTile|storageManager|continue|keepPlaying|actuator|continueGame|actuate|restart|setup|setGameState|stringify|parse|serialize|500|100|50|1000'.split('|'),0,{}))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment