青蛙跳小游戏之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

相关内容

    暂无相关文章

评论关闭