0

バイナリ要素を持つMサイズの 2D マトリックス ( ) があります。n x nこの行列の対角線をスキャンして、ビット パターン、たとえばビット パターンを除外します111(ビット パターンの長さはユーザー定義です)。

私の問題を明確にするために、さらに説明しましょう。フィルタリング基準は、次の場合です。

  1. M(i, j) == 1M(i-1, j-1)およびその隣接する 2 つ (この場合)M(i+1, j+1)が保持され、1それ以外の場合は bit に変更されます。M(i,j)10

  2. または、同じ対角線にM(i,j) ==1少なくとも 2 つの先行1する s または 2 つの後続の s がある場合、最初の条件が true でなくても保持する必要があります。1M(i,j)1

私はPythonを初めて使用し、それに苦労しているため、この問題を解決するためのヘルプ/提案は大歓迎です...

4

2 に答える 2

0

結果を印刷してみてください。

matrix = [[0, 1, 0, 1], [1, 1, 1, 1], [0, 1, 1, 0], [1, 0, 1, 0]]

for i in range(len(matrix)):
    line = ''
    for j in range(len(matrix[i])):
        line += str(matrix[i][j]) + " "
    print(line)

diagonal = ''
for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        if i == j:
            diagonal += str(matrix[i][j]) + ' '

print('Diagonal: ' + diagonal)

出力:

0 1 0 1 
1 1 1 1 
0 1 1 0 
1 0 1 0 
Diagonal: 0 1 1 0 

ここで、いくつかの実験を試みて、平行な対角線を取得できるかどうかを確認してください。

于 2013-11-07T14:21:45.310 に答える