Python 电脑解决游戏中的灯光问题
我做了一个游戏,其中一个随机发光的方块板被生成(0是关闭的,1是打开的),目标是照亮整个板。目前,我一直在使用用户输入来赢得游戏,当点击一个正方形时,它会反转,以及它上面、下面、左边和右边的邻居。现在,我试图让计算机在没有用户输入的情况下解决游戏,但我在Python 电脑解决游戏中的灯光问题,python,python-3.x,recursion,Python,Python 3.x,Recursion,我做了一个游戏,其中一个随机发光的方块板被生成(0是关闭的,1是打开的),目标是照亮整个板。目前,我一直在使用用户输入来赢得游戏,当点击一个正方形时,它会反转,以及它上面、下面、左边和右边的邻居。现在,我试图让计算机在没有用户输入的情况下解决游戏,但我在evolve2d中的choice功能无法正常工作。目前它正在一次又一次地制作原始列表。任何指导都将不胜感激 import time # provides time.sleep(0.5) from csplot import choice from
evolve2d
中的choice
功能无法正常工作。目前它正在一次又一次地制作原始列表。任何指导都将不胜感激
import time # provides time.sleep(0.5)
from csplot import choice
from random import * # provides choice( [0,1] ), etc.
import sys # larger recursive stack
sys.setrecursionlimit(100000) # 100,000 deep
def runGenerations2d(L , x = 0,y=0):
show(L)
print( L ) # display the list, L
time.sleep(.1) # pause a bit
newL = evolve2d( L ) # evolve L into newL
print(newL)
if min(L) == 1:
#I like read outs to be explained so I added an extra print command.
if x<=1: # Takes into account the possibility of a 1 click completition.
print ('BaseCase Reached!... it took %i click to complete' % (x))
print (x)
done()#removes the need to input done() into the shell
else:
print ('BaseCase Reached!... it took %i clicks to complete' % (x))
print (x)
done()#removes the need to input done() into the shell
return
x = x+1 # add 1 to x before every recusion
runGenerations2d( newL , x,y ) # recurse
def setNewElement2d( L, i, j, x=0, y=0 ):
if y==j and (i == x-1 or i == x+1 or i ==x):
return 1-L[j][i]
elif x==i and (j == y-1 or j == y+1):
return 1-L[j][i]
else:
return L[j][i]
def evolve2d( L ):
N = len(L) # N now holds the size of the list
x = choice (L)
y = choice (L)
return [[ setNewElement2d( L, i, j,x,y ) for i in range(N)]for j in range(N) ]
导入时间#提供时间。睡眠(0.5)
从csplot进口选择
从随机导入*#提供选择([0,1]),等等。
导入系统#更大的递归堆栈
系统设置递归限制(100000)#100000深
def RungeGenerations2D(L,x=0,y=0):
表演(L)
打印(L)#显示列表,L
时间。睡眠(.1)#暂停一下
newL=evolve2d(L)#将L进化为newL
打印(新)
如果最小值(L)==1:
#我喜欢对读出的内容进行解释,所以我添加了一个额外的打印命令。
如果是,为什么您要从csplot导入“选择”,然后立即从random导入不同的“选择”来消除这一点?其次,我通常建议不要使用import*
,因为它会产生不明确的结果。还有,为什么你有如果是xHonestly,我在解码上有困难。递归是一个难题。我真的只是对你说“选择”不起作用的评论作出反应。像这样的尾部递归总是可以重构成一个循环-你考虑过吗?你有两个帐户,或者你和Xuvin都在处理同一个问题吗?想回答的人应该访问下面的链接,在那里OP发布了几乎相同的问题,当回答时,简单地删除它:你为什么要导入“选择”从csplot,然后立即吹走了一个不同的进口的“选择”从随机?其次,我通常建议不要使用import*
,因为它会产生不明确的结果。还有,为什么你有如果是xHonestly,我在解码上有困难。递归是一个难题。我真的只是对你说“选择”不起作用的评论作出反应。像这样的尾部递归总是可以重构成一个循环-你考虑过吗?你有两个帐户,或者你和Xuvin都在处理同一个问题吗?想回答的人应该访问以下链接,在那里OP发布了几乎相同的问题,回答后,简单地将其删除: