青蛙跳小游戏之python3解法
青蛙跳小游戏之python3解法
青蛙跳小游戏是一个看似简单的智力游戏,游戏任务是让左右两边的青蛙互换位置。鼠标点击青蛙,它会跳到离它最近的一块空置的石头上。下图是游戏界面:
vcHL1eK49tCh087Pt6OswbS902h0dHA6Ly93d3cuNDM5OS5jb20vZmxhc2gvNzU4NC5odG0goaM8L3A+CjxwPiAgICAgICAg1eK49tCh087Pt87Ss6LK1MHLusO24LTOo6zMq7G/wcujrNa7xNzTw7T6wuu448bwo6y+zcrHye62yMvRy/ejrNXStb3Su7j2veK+zU9LoaO0+sLryOfPwqO6PC9wPgo8cD48L3A+CjxwcmUgY2xhc3M9"brush:java;">pos=[0 for x in range(7)]
for i in range(3):
pos[i]=-1
for i in range(3):
pos[6-i]=1
#print(pos)
repos=pos[::-1]
count=0
def kltry():
global count,pos,repos
if pos==repos:
print('OK')
exit()
blank=pos.index(0)
if blank>=1 and pos[blank-1]<0:
pos[blank]=-1
pos[blank-1]=0
print(str(blank-1)+'->'+str(blank))
kltry()
pos[blank]=0
pos[blank-1]=-1
print('return')
if blank>=2 and pos[blank-2]<0:
pos[blank]=-1
pos[blank-2]=0
print(str(blank-2)+'->'+str(blank))
kltry()
pos[blank]=0
pos[blank-2]=-1
print('return')
if blank<=5 and pos[blank+1]>0:
pos[blank]=1
pos[blank+1]=0
print(str(blank)+'<-'+str(blank+1))
kltry()
pos[blank]=0
pos[blank+1]=1
print('return')
if blank<=4 and pos[blank+2]>0:
pos[blank]=1
pos[blank+2]=0
print(str(blank)+'<-'+str(blank+2))
kltry()
pos[blank]=0
pos[blank+2]=1
print('return')
kltry()
输出结果如下:
kl@kl-Latitude:~/桌面$ python3 jumpfrog.py 2->3 1->2 0->1 return return 0->2 return 2<-4 3->4 1->3 0->1 0<-2 1->2 return return return 1<-2 0->2 0<-1 return return return return 3<-5 4->5 4<-6 5->6 return return return 5<-6 4->6 4<-5 return return return return return 4<-5 3->5 1->3 0->1 0<-2 1->2 return 2<-4 3->4 1->3 1<-2 return return return 4<-6 5->6 3->5 1->3 1<-2 2<-4 3->4 OK
2->3就是从把第2个位置的青蛙跳到第3个位置(从0开始数的哈),return就是上一步走的不对,要返回上一级,但是游戏是不能悔棋的,只能重新开始,所以根据这样的结果也不好手工复现,于是我又写了如下的代码,之前,先把上面的输出结果重定向到log文件中,把上面数据处理一下:
f=open('log','r') data=[] while True: line=f.readline() if line=='': break data.append(line[:-1]) f.close() while 'return' in data: n=data.index('return') del data[n] del data[n-1] print(data)
这样,输出结果处理后变成:
kl@kl-Latitude:~/桌面$ python3 showfog.py ['2->3', '2<-4', '4<-5', '3->5', '1->3', '0->1', '0<-2', '2<-4', '4<-6', '5->6', '3->5', '1->3', '1<-2', '2<-4', '3->4', 'OK']
这样就可以手工复现了,总共需要15步让左右两边的青蛙交换位置。周围好多人都可以分分钟甚至一把就通关,我还要代码搞起果然弱爆了。。。果然木有50W年薪了呢。。。
转载请注明:转自http://blog.csdn.net/littlethunder/article/details/20525965
相关内容
- 暂无相关文章
评论关闭