Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Compressed solution in Creative category for Behind 2048 by nickie
L,R,M,E=list,reversed,map,enumerate
X,C,T=L("UWINGAMEOVER"),lambda s:L(M(L,M(R,s))),lambda s:L(M(L,zip(*s)))
A,Z=[X[:4]]*4,[X[4:8],X[8:]]*2
def S(r,j=0,m=0):
for i,c in E(r):
if m*(c==r[j-1]):r[j-1],m=2*c,0
elif c:r[j],j,m=c,j+1,1
return r[:j]+[0]*(len(r)-j)
left=P=lambda s:L(M(S,s));right=Q=lambda s:C(M(S,C(s)))
up,down=lambda s:T(P(T(s))),lambda s:T(Q(T(s)))
def move2048(s,m):
s,a=L(eval(m)(s)),0
for i,r in R(L(E(s))):
for j,c in R(L(E(r))):
if c==2048:return A
if a+c==0:s[i][j],a=2,1
return s if a else Z
Sept. 14, 2014
Comments: