Skip to content

Instantly share code, notes, and snippets.

@crimx
Created April 6, 2014 04:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save crimx/10001638 to your computer and use it in GitHub Desktop.
Save crimx/10001638 to your computer and use it in GitHub Desktop.
Reformatted justecorruptio / 2048.c https://gist.github.com/justecorruptio/9967738
M[16],X=16,W,k;
main() {
T(system("stty cbreak"));
puts(W&1 ? "WIN":"LOSE");
}
K[]={2,3,1};
s(f,d,i,j,l,P) {
for(i=4; i--; )
for(j=k=l=0; k<4; )
j<4?
P = M[w(d,i,j++)],
W |= P >> 11,
l*P&&(
f? M[w(d,i,k)]=l<<(l==P) : 0,
k++
),
l=l?
P?
l-P? P : 0
:
l
:
P
:
(f?
M[w(d,i,k)] = l
:
0, ++k, W |= 2*!l, l=0
);
}
w(d,i,j) {
return d? w(d-1,j,3-i) : 4*i+j;
}
T(i) {
for(i=X+rand()%X; M[i%X]*i; i--);
i? M[i%X]=2<<rand()%2 : 0;
for(W=i=0;i<4;)
s(0,i++);
for(i=X,puts("\e[2J\e[H"); i--; i%4||puts(""))
printf(M[i]? "%4d|" : " |", M[i]);
W-2||read(0,&k,3)|T(s (1,K[(k>>X)%4]));
}//[2048]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment