我想找出所有可能的电路板布局。 然后将它们添加到html模板中。 我的代码在底部。 我用递归和迭代,做了大约五个不同的版本。 但他们都因为某种原因失败了。 不管是堆栈溢出、跳过布局还是神秘崩溃,它们都没有按预期运行。 如果有人知道,请告诉我我做错了什么。 几个小时后我就准备放弃了。在
如果有人想知道我为什么要做这么奇怪的事情,我需要用html和css制作tic-tac-toe。这是我唯一能想到的方法。 谢谢,谢谢,谢谢。在
import itertools
import sys
sys.setrecursionlimit(10000)
templateFile = open('template.html','r')
template = templateFile.read()
templateFile.close()
def hasWon(row):
for player in ['x','o']:
if (row[0] == player) & (row[1] == player) & (row[2] == player):
return [True,player]
if (row[3] == player) & (row[4] == player) & (row[5] == player):
return [True,player]
if (row[6] == player) & (row[7] == player) & (row[8] == player):
return [True,player]
if (row[0] == player) & (row[3] == player) & (row[6] == player):
return [True,player]
if (row[1] == player) & (row[4] == player) & (row[7] == player):
return [True,player]
if (row[2] == player) & (row[5] == player) & (row[8] == player):
return [True,player]
return [False,player]
def getTurn(turnN):
if turnN % 2 == 0:
return 'o'
else:
return 'x'
def doPages(row, turnN):
global template
curpage = template
print "row:" + ''.join(row)
for i in range(1,10):
tempRow = row
if row[i-1] == '-': #Cell is empty
tempRow[i-1] = getTurn(turnN)
print "tr: %s, turnN %d, i: %d" % (''.join(tempRow),turnN,i)
curpage = curpage.replace('(page'+str(i)+')', ''.join(tempRow)+'.html')
#doPages(tempRow, turnN+1)
if row[i-1] == 'x': #Cell is full. Invalid
curpage = curpage.replace('(page'+str(i)+')', '')
curpage = curpage.replace('(style'+str(i)+')', 'background-color:red;')
if row[i-1] == 'o': #Cell is full. Invalid
curpage = curpage.replace('(page'+str(i)+')', '')
curpage = curpage.replace('(style'+str(i)+')', 'background-color:blue;')
doPages(tempRow, turnN+1)
curpage = curpage.replace('(turn)', 'Turn: %d (%s)' % (turnN, getTurn(turnN)))
if hasWon(row)[0]:
curpage = curpage.replace('<!--won-->', '<h1>%s has won</h1>' % hasWon(row)[1])
page = open('game/'+''.join(row)+'.html','w+')
page.write(curpage)
page.close()
return
doPages(list(['-'] * 9),0)
print "Done"
另外,如果我需要发布更多的数据,就说,我会把它们都放在github上。在
编辑: 我得到了使用itertools的提示。 是的,这是密码。 但是,虽然这段代码可以工作并生成字符串“oooxxx--”,但它并不能使它成为“ooxoxxx--”。 我一辈子都不明白为什么会这样。 这是一个分条的版本,应该可以产生所有的电路板。 有人能看出什么地方不对劲吗?在
^{pr2}$
让所有可能的全板你可以做
然后用列表理解法把每个都做成3x3的板
^{pr2}$结果
长期问题:
如上所述,你应该坐下来想一个更聪明的方法来做这件事。暴力强迫有很多问题,其中只有一部分被列出。你得考虑不完整的棋盘和移动的顺序。在
相关问题 更多 >
编程相关推荐