Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Непонятное явление в матрице


Автор: cannibale 3.5.2010, 20: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]]


почему ловятся Нули во второй строке результата, а ещё и в таком количестве?
ведь в условии явно задано что оно должно срабатывать только при условии ненулевого значения в ячейке матрицы

Автор: Daevaorn 3.5.2010, 20:40
Цитата(cannibale @  3.5.2010,  21:29 Найти цитируемый пост)
dtype = str

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

0 != '0'

Автор: cannibale 4.5.2010, 09:05
тем не менее ничего не меняется.
хоть str, хоть int, хоть без

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)