Непонятное явление в матрице

 
0
 
Python
ava
cannibale | 03.05.2010, 21:29
при выполнении данного кода

# -*- coding: cp1251 -*-
import numpy as np
matrix1 = np.array([[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 1, 1, 0, 0]], dtype = str)

for x in range(7, 0, -1):
for y in range(7, 0, -1):
if matrix1[x][y] != 0:
if matrix1[x][y] == matrix1[x][y-1]== matrix1[x][y-2]:# проверка на 3 совпадения по y
print "CATCH 3y!!!!", matrix1[x][y],matrix1[x][y-1],matrix1[x][y-2]
matrix1[x][y],matrix1[x][y-1],matrix1[x][y-2] = 0, 0, 0
score += 1
if matrix1[x][y] == matrix1[x][y-1]== matrix1[x][y-2] == matrix1[x][y-3]:# проверка на 4 совпадения по y
print "CATCH 4y!!!!",matrix1[x][y],matrix1[x][y-1],matrix1[x][y-2], matrix1[x][y-3]
matrix1[x][y],matrix1[x][y-1],matrix1[x][y-2],matrix1[x][y-2] = 0, 0, 0, 0
score += 2

print "score = ",score
print matrix1


имеем следующее

CATCH 3y!!!! 1 1 1
CATCH 4y!!!! 0 0 0 0
score = 3
score = 3
score = 3
score = 3
score = 3
score = 3
score = 3
[[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]]


почему ловятся Нули во второй строке результата, а ещё и в таком количестве?
ведь в условии явно задано что оно должно срабатывать только при условии ненулевого значения в ячейке матрицы
Kommentare (2)
ava
Daevaorn | 03.05.2010, 20:40 #
Цитата (cannibale @ 3.5.2010, 21:29 findReferencedText)
dtype = str

А зачем вы преобразуете данные в строки?

0 != '0'
ava
cannibale | 04.05.2010, 09:05 #
тем не менее ничего не меняется.
хоть str, хоть int, хоть без
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden