2015-03-10 2 views
-1

у меня есть игровое поле (размер платы составляет не менее 1x1, 10x10 макс) , который представлен в виде вложенного списка т.е. [['-', '-'], ['-', '-']], где '-' означает ячейка пуста, и каждый список представляет собой строку.
я могу поставить корабли там, экс [['a', '-'], ['a', '-']] означает, что судно 'a' размера 2, которые стоят вертикально в колонке 0.итерации над вложенными списками

мне нужно написать код, который будет убедиться, что судно появляется только один раз. Например, следующее является недействительным раскладка:

[['a', '-', 'a'], 
['a', '-', '-'], 
['-', '-', '-']] 

Я понимаю, что это получится петля, но я понятия не имею, с чего начать.

+0

Что вы хотите сказать? Это звучит так, будто вы хотите, чтобы кто-то задал вам задание. – TeneCursum

+0

Как я могу проверить его вложенном списке Я понимаю, что однажды [cell] = '-', тогда как вокруг него есть другие строки, означает, что корабль не появляется один раз – Lina

ответ

0
nested = [['nested', 'list'], ['2nd', 'row']] 

for row in nested: 
    for item in row: 
     print item 

Вы теперь перебираете вложенный список. Удачи.

0

Поскольку это выглядит как домашнее задание, я дам вам отправную точку, но вам нужно будет расширить его.

Для игрового поля (или любой матрицы) вам понадобятся две петли for. Один для оси x и один для оси y. Предполагая, что вы используете 2-й массив:

#loop over all rows 
for row in array: 
    #loop over all columns 
    for column in row: 
     #process each cell here 
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! когда цикл по строкам.

Смежные вопросы