我有一个游戏区域(棋盘尺寸为最小1x1,最大10x10)
它由嵌套列表表示,即[['-', '-'], ['-', '-']]
,其中'-'
表示单元格为空,每个列表代表一行。
我可以把船放在那里,因为前[['a', '-'], ['a', '-']]
意味着有一艘大小为2的船'a'
在第0列垂直竖立。
我需要编写一个代码,以确保该船只出现一次。例如,以下是无效布局:
[['a', '-', 'a'],
['a', '-', '-'],
['-', '-', '-']]
我知道它会变成一个循环,但我不知道从哪里开始。
答案 0 :(得分:0)
nested = [['nested', 'list'], ['2nd', 'row']]
for row in nested:
for item in row:
print item
您现在正在循环嵌套列表。祝你好运。
答案 1 :(得分:0)
由于这看起来像是家庭作业,我会给你一个起点,但是你需要对此进行扩展。
对于游戏板(或任何矩阵),您需要两个for
循环。一个用于x轴,一个用于y轴。假设您正在使用二维数组:
#loop over all rows
for row in array:
#loop over all columns
for column in row:
#process each cell here
答案 2 :(得分:0)
假设您的主板是3x3,无效的主板。
my_board_rows = [['a', 'a', '-'],
['-', 'a', '-'],
['-', 'a', '-']]
my_board_cols = [[col[i] for col in my_board] for i in range(len(my_board))]
您可以使用a
循环检查无关的for
。
row_idx = []
for row, items in enumerate(my_board_rows):
for item in range(len(items)):
if items[item] == 'a':
row_idx.append([row, item])
if len(dict(row_idx)) > 1:
print('Invalid board!')
列也一样:
col_idx = []
for col, items in enumerate(my_board_cols):
for item in range(len(items)):
if items[item] == 'a':
idx.append([col, item])
if len(dict(col_idx)) > 1:
print('Invalid board!')
循环遍历行时会打印Invalid board!
。