青蛙跳小游戏是一个看似简单的智力游戏,游戏任务是让左右两边的青蛙互换位置。鼠标点击青蛙,它会跳到离它最近的一块空置的石头上。下图是游戏界面:
我在4399上也找到了这个小游戏,链接http://www.4399.com/flash/7584.htm 。
这个小游戏我尝试了好多次,太笨了,只能用代码搞起,就是深度搜索,找到一个解就OK。代码如下:
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