Skip to content

Instantly share code, notes, and snippets.

@kimhunter
Forked from justecorruptio/2048.c
Last active August 29, 2015 13:58
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 kimhunter/9988787 to your computer and use it in GitHub Desktop.
Save kimhunter/9988787 to your computer and use it in GitHub Desktop.
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