青蛙跳小游戏是一个看似简单的智力游戏,游戏任务是让左右两边的青蛙互换位置。鼠标点击青蛙,它会跳到离它最近的一块空置的石头上。下图是游戏界面:
我在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