Python 电脑解决游戏中的灯光问题

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

我做了一个游戏,其中一个随机发光的方块板被生成(0是关闭的,1是打开的),目标是照亮整个板。目前,我一直在使用用户输入来赢得游戏,当点击一个正方形时,它会反转,以及它上面、下面、左边和右边的邻居。现在,我试图让计算机在没有用户输入的情况下解决游戏,但我在
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发布了几乎相同的问题,回答后,简单地将其删除: