Python 2048 小游戏 ,但是人生不能儿戏,与君共勉

来源:互联网 发布:俞莲舟 精华 知乎 编辑:程序博客网 时间:2024/06/06 04:00

Python 一直被炒得热火朝天,就像这炙热的天气,也像老谭酸菜 或是那茅台愈久弥香  也像洋槐花清新淡雅


一下代码参考 文章 http://www.tuicool.com/articles/YNzqu2j  实现  ,代码还需要优化 ,不是效率 ,是功能不完善 


一点心得 就是 Python 功能强悍


# -*- encoding:utf-8 -*-import randomimport copydef T(a):    return a if a else ''def display(mtr):    print "┌" + ("-" * 5 + "┬") * 3 + "-" * 5 + "┐"    print "│%4s │%4s │%4s │%4s │" % (T(mtr[0][0]),T(mtr[0][1]),T(mtr[0][2]),T(mtr[0][3]))    print "├" + ("-" * 5 + "┼") * 3 + "-" * 5 + "┤"    print "│%4s │%4s │%4s │%4s │" % (T(mtr[1][0]),T(mtr[1][1]),T(mtr[1][2]),T(mtr[1][3]))    print "├" + ("-" * 5 + "┼") * 3 + "-" * 5 + "┤"    print "│%4s │%4s │%4s │%4s │" % (T(mtr[2][0]),T(mtr[2][1]),T(mtr[2][2]),T(mtr[2][3]))    print "├" + ("-" * 5 + "┼") * 3 + "-" * 5 + "┤"    print "│%4s │%4s │%4s │%4s │" % (T(mtr[3][0]),T(mtr[3][1]),T(mtr[3][2]),T(mtr[3][3]))    print "└" + ("-" * 5 + "┴") * 3 + "-" * 5 + "┘"#ran_pos = random.sample(range(16), 2)  # 随机获取两个数字#print ran_pos[0] / 4#print ran_pos[0] % 4#print range(16)# python need return functiondef init(): # initial of matrix    mtr=[[0 for i in  range(4)] for j in range(4)]    ran_pos = random.sample(range(16), 2)  # 随机获取两个数字    print ran_pos[0]/4    print ran_pos[0]%4    mtr[ran_pos[0]/4][ran_pos[0]%4] = mtr[ran_pos[1]/4][ran_pos[1]%4] = 2    return mtr#print init()#print 'me'#print range(1,4)  # start to end and step is 1#x = 3#x *=2  # double the data#print x#mtr = init()#display(mtr)#for i in  reversed(range(5)):#    print i#print  range(133)def cellDataMove(mtr,dirct):    score  =0    visit =[]    if dirct == 0: #left        for i in range(4): # 定义到行            for j in range(1,4): #定义到列                for k in range(j,0 ,-1): #对当前列以及上列的合并操作                    if mtr[i][k-1] ==0:                        mtr[i][k-1]=mtr[i][k]                        mtr[i][k]=0                    elif mtr[i][k-1] == mtr[i][k] and 4*i +k -1 not in visit and 4*i + k not in visit and mtr[i][k] !=0:                        mtr[i][k-1] *=2                        mtr[i][k] = 0                        score +=mtr[i][k-1]                        visit.append(4*i + k)                        visit.append(4*i + k -1)    elif dirct ==1: #down        for j  in  range(4):            for i  in  range(3,0,-1):                for k in reversed(range(0,i)):                    if mtr[k+1][j] == 0:                        mtr[k+1][j] = mtr[k][j]                        mtr[k][j] = 0                    elif mtr[k+1][j] == mtr[k][j] and 4*(k + 1 ) + j not  in visit and 4*k + j not in visit and mtr[k][j] != 0:                        mtr[k + 1][j] *=2                        mtr[k ][j] = 0                        score += mtr[k+1][j]                        visit.append(4*(k + 1 ) + j)                        visit.append(4*(k ) + j)    elif dirct == 2: # to up        for j in range (4):            for i  in  range(1,4):                for k  in range(i,0,-1):                    if mtr[k-1][j] == 0 :                        mtr[k - 1][j] =mtr[k][j]                        mtr[k - 1][j] =0                    elif mtr[k - 1][j] == mtr[k][j] and 4*(k - 1 ) + j not in visit and 4*k + j not  in visit  and mtr[k][j]  !=0:                        mtr[k - 1][j] *=2                        mtr[k ][j] = 0                        score += mtr[k -1][j]                        visit.append(4*k + j)                        visit.append(4*(k- 1 ) + j  )    elif dirct ==3 : # to right        for i in  range(4):            for j in  range(3,0,-1):                for k in reversed(range(j)):                    if mtr[i][k +1] == 0 :                        mtr[i][k + 1] = mtr[i][k]                        mtr[i][k] =0                    elif mtr[i][k + 1] == mtr[i][k ] and  4* i  + k + 1 not in visit and  k*4 + k not in visit and mtr[i][k] !=0:                        mtr[i][k + 1] *=2                        mtr[i][k ] = 0                        score +=mtr[i][k + 1]                        visit.append( 4* i  + k + 1)                        visit.append( 4* i  + k )    return  scoredef update(mtr):    ran_pos =[]    ran_num =[2,4]    for  i  in range(4):        for j in range(4):            if mtr[i][j]==0:                ran_pos.append(4*i+j)    if(len(ran_pos)>0):         k=random.choice(ran_pos)         n=random.choice(ran_num)         mtr[k/4][k%4]=ndef goon(mtr,score):    if 2048 in mtr:        print "great ! you won.."        raw_input("please enter any key world to contine")        exit()    if 0 in mtr:        return  True    for i in range(4):        for  j  in range(4):            if i < 3 and mtr[i][j]==mtr[i+1][j]:                return True            if j < 3 and mtr[i][j] == mtr[i][j+1]:                return True    print "sorry game over"    return  Falsedeclare = "←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)"illegal= "Illegal operation"noefficient = "This nove has no efficient"if __name__=='__main__':    score = 0    step = 0    mtr=init()    mtr_stk=[]    scr_stk =[]    tmp = copy.deepcopy(mtr)    mtr_stk.append(mtr)    scr_stk.append(0)    print "this is the init 2048"    display(mtr)    while goon(mtr,score):        dirct = raw_input("step :%d score:%d(%s):" % (step ,score, declare))        dirct=dirct.lower()        if dirct =='q':            break        elif dirct =='a' or dirct =='h':            dirct = 0        elif dirct =='s' or dirct =='j':            dirct =1        elif dirct=='w' or dirct =='k':            dirct =2        elif dirct =='d' or dirct =='l':            dirct =3        elif dirct=='b':            if len(mtr_stk) ==1:                print "can not back"            else:                mtr_stk.pop()                scr_stk.pop()                mtr=copy.deepcopy(mtr_stk[-1])                score =scr_stk[-1]                step =-1            continue        else:            print illegal            continue        tmp = copy.deepcopy(mtr)        op_scr = cellDataMove(mtr,dirct)        #display(mtr)        print op_scr        if tmp !=mtr:            score = score+ op_scr            update(mtr)            display(mtr)            tmp = copy.deepcopy(mtr)            mtr_stk.append(tmp)            scr_stk.append(int (score))            step = step + 1        else:            print noefficient


下面是执行的几个测试, 不足之处还请各位指正:


C:\Python27\python.exe C:/Users/IBM_ADMIN/PycharmProjects/OnePython/src/com/2048/2048.py
2
2
this is the init 2048
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │   2 │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │     │
└-----┴-----┴-----┴-----┘
step :0 score:0(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │   2 │
└-----┴-----┴-----┴-----┘
step :1 score:0(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
4
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │   2 │
└-----┴-----┴-----┴-----┘
step :2 score:4(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   8 │     │     │   2 │
└-----┴-----┴-----┴-----┘
step :3 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │   4 │     │     │
├-----┼-----┼-----┼-----┤
│     │     │   2 │     │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :4 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):w
0
This nove has no efficient
step :4 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │     │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :5 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │   2 │   2 │     │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :6 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   2 │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :7 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
4
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :8 score:16(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
4
┌-----┬-----┬-----┬-----┐
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :9 score:20(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
8
┌-----┬-----┬-----┬-----┐
│     │     │   4 │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │     │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :10 score:28(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :11 score:28(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   4 │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :12 score:28(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
12
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│   4 │   8 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :13 score:40(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
16
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │   4 │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│     │   4 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :14 score:56(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   8 │   8 │
├-----┼-----┼-----┼-----┤
│     │   4 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :15 score:64(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :16 score:72(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
16
┌-----┬-----┬-----┬-----┐
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   4 │
├-----┼-----┼-----┼-----┤
│     │     │     │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :17 score:88(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│   4 │     │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :18 score:88(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :19 score:88(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
8
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   8 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :20 score:96(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
4
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │     │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   4 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :21 score:100(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
8
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│     │   2 │   8 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :22 score:108(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │   8 │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :23 score:108(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
52
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │   4 │
├-----┼-----┼-----┼-----┤
│   4 │   8 │     │   4 │
├-----┼-----┼-----┼-----┤
│   4 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :24 score:160(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
16
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │     │   8 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :25 score:176(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│   4 │   2 │   8 │   8 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :26 score:176(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
16
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │   2 │     │   2 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :27 score:192(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   2 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :28 score:192(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
4
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │   4 │     │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :29 score:196(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │   4 │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :30 score:196(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │   4 │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :31 score:204(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │     │   2 │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :32 score:212(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
4
┌-----┬-----┬-----┬-----┐
│     │   4 │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :33 score:216(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│   4 │     │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :34 score:216(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
8
┌-----┬-----┬-----┬-----┐
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :35 score:224(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│   4 │   8 │     │   4 │
├-----┼-----┼-----┼-----┤
│   4 │   8 │   4 │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │     │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :36 score:224(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
32
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│   4 │  16 │   4 │     │
├-----┼-----┼-----┼-----┤
│   4 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│  16 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :37 score:256(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │   2 │   4 │     │
├-----┼-----┼-----┼-----┤
│     │  16 │   4 │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│  16 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :38 score:264(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│   4 │  16 │   8 │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│  16 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :39 score:272(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
96
┌-----┬-----┬-----┬-----┐
│     │     │   2 │     │
├-----┼-----┼-----┼-----┤
│   2 │   4 │  16 │   8 │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│     │     │  64 │   2 │
└-----┴-----┴-----┴-----┘
step :40 score:368(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   4 │  16 │   8 │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│  64 │   2 │     │   4 │
└-----┴-----┴-----┴-----┘
step :41 score:368(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
16
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│   8 │   4 │  16 │   8 │
├-----┼-----┼-----┼-----┤
│  64 │   4 │  16 │   8 │
└-----┴-----┴-----┴-----┘
step :42 score:384(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
56
┌-----┬-----┬-----┬-----┐
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :43 score:440(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │   2 │     │
├-----┼-----┼-----┼-----┤
│     │   4 │   4 │     │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :44 score:440(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
8
┌-----┬-----┬-----┬-----┐
│   2 │   4 │     │     │
├-----┼-----┼-----┼-----┤
│   8 │     │     │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :45 score:448(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):as
Illegal operation
step :45 score:448(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
16
┌-----┬-----┬-----┬-----┐
│     │   4 │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   4 │     │     │
├-----┼-----┼-----┼-----┤
│  16 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :46 score:464(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   8 │     │     │
├-----┼-----┼-----┼-----┤
│  16 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :47 score:472(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
This nove has no efficient
step :47 score:472(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   8 │     │   2 │
├-----┼-----┼-----┼-----┤
│  16 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :48 score:472(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
4
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │   8 │     │     │
├-----┼-----┼-----┼-----┤
│  16 │   2 │   4 │   2 │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :49 score:476(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):