gpt4 book ai didi

python - 为 "Lights out"变体生成切换矩阵

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:24:49 24 4
gpt4 key购买 nike

在传统的 3x3 熄灯游戏中,最左侧字段的切换矩阵如下所示:

1 1 0
1 0 0
0 0 0

这意味着,当我们按下第一个按钮时,只有它自己和旁边的灯被切换。在我的变体中,一个按钮的切换矩阵看起来像

1 1 1
1 0 0
1 0 0

同一行和同一列中的每个灯都被切换。为了有效地解决这个问题,生成了一个 n^2 x n^2 矩阵,按钮的切换矩阵被转换为向量 row-major order并附加到该矩阵:

1 1 0 1 0 0 0 0 0 <-- this is the example matrix
1 1 1 0 1 0 0 0 0
0 1 1 0 0 1 0 0 0
1 0 0 1 1 0 1 0 0
0 1 0 1 1 1 0 1 0
0 0 1 0 1 1 0 0 1
0 0 0 1 0 0 1 1 0
0 0 0 0 1 0 1 1 1
0 0 0 0 0 1 0 1 1

对于我的变体,它看起来像

1 1 1 1 0 0 1 0 0
1 1 1 0 1 0 0 1 0
1 1 1 0 0 1 0 0 1
1 0 0 1 1 1 1 0 0
0 1 0 1 1 1 0 1 0
0 0 1 1 1 1 0 0 0
1 0 0 1 0 0 1 1 1
0 1 0 0 1 0 1 1 1
0 0 1 0 0 1 1 1 1

this lecture (p. 6),他们生成与此类似的矩阵(适用于纯 python):

def GenerateToggleMatrix(n):
result = []

for i in range(n*n):
row = [0]*n*n
result.append(row)

for i in range(n):
for j in range(n):

col = n*i+j #row-major
result[col][col] = 1

if i > 0: result[col][col-n] = 1
if i < n-1: result[col][col+n] = 1
if j > 0: result[col][col-1] = 1
if j < n-1: result[col][col+1] = 1
return result

为了适应我的变体,我的大脑完全卡住了,有人可以帮助我吗?

最佳答案

只需使用一个循环来更改同一行或列中的所有元素。

即改变:

        if i > 0:   result[col][col-n] = 1
if i < n-1: result[col][col+n] = 1
if j > 0: result[col][col-1] = 1
if j < n-1: result[col][col+1] = 1

        for k in range(n):
result[col][n*i+k] = 1
result[col][n*k+j] = 1

关于python - 为 "Lights out"变体生成切换矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27336847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com