2014-10-12 2 views
-1

Я хотел бы спросить, как проверить, работает ли мой 2D-массив со строкой для повторяющегося значения?Как искать элемент в 2D-массиве

//2d array 
sudokuBoard=[[0 for sudokuRow in range(0,int(boardSize))] for sudokuColumn in range(0,int(boardSize))] 

2D-массив будет производить таблицу 3х3, как следующее:

0|0|0 
0|0|0 
0|0|0 

Как убедиться, что, когда я ввести значение в таблицу выше, она будет проверять строку позиции значение и столбец для двойного значения?

Например, если я введу «0» в таблицу, произойдет ошибка.

ответ

1

Первое, что нужно, чтобы получить доступ к столбцам, так что вы можете сделать эту работу с zip(*sudokuBoard) затем для вставки значение, вы должны проверить наличие значения в правильной строке и столбце! Обратите внимание, что у вас есть свои строки в sudokuColumn!

columns=map(list,zip(*sudokuBoard)) 
sudokuBoard=[[0 for sudokuRow in range(0,int(boardSize))] for sudokuColumn in range(0,int(boardSize))] 

def insert_value(your_list,value,row,col): 
    if value not in columns[col] and value not in your_list[row]: 
     your_list[row][col]=value 
    else: 
     raise ValueError("you can not insert a duplicate value !!") 
1

Попробуйте это:

def inBoard(value): 
    for row in sudokuBoard: 
     if value in row: 
      return True 
    return False 

При этом вы можете сделать что-то вроде этого:

if inBoard(3): 
    print "already in board" 
else: 
    print "well played" 
Смежные вопросы