Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การกลับและกลับค่ามาทริกซ์ไบนารีใน Python

ภาพรวม

โจทย์นี้ต้องการให้ทำการกลับลำดับแถว (reverse) ของมาทริกซ์ไบนารี จากนั้นกลับค่าแต่ละบิต (0 กลายเป็น 1, 1 กลายเป็น 0) ซึ่งเป็นการดำเนินการที่พบได้บ่อยในการประมวลผลภาพและอัลกอริทึมต่างๆ

ตัวอย่าง

อินพุต:

110
010
001

เอาต์พุต:

100
101
011

ขั้นตอนการแก้ปัญหา

  1. วนลูปผ่านแต่ละแถวของมาทริกซ์
  2. กลับลำดับแถวด้วย row.reverse()
  3. วนลูปผ่านแต่ละค่าในแถวที่กลับแล้ว
  4. ถ้าค่าเป็น 1 ให้เปลี่ยนเป็น 0, ถ้าเป็น 0 ให้เปลี่ยนเป็น 1
  5. อัปเดตค่าในมาทริกซ์เดิม

โค้ด Python

class Solution:
    def solve(self, mat):
        track = 0
        for row in mat:
            row.reverse()
            tracker = 0
            for val in row:
                if val == 1:
                    mat[track][tracker] = 0
                else:
                    mat[track][tracker] = 1
                tracker += 1
            track += 1
        return mat

ob = Solution()
mat = [[1,1,0],[0,1,0],[0,0,1]]
print(ob.solve(mat))

วิธีการเขียนสั้นๆ (Pythonic)

def flip_and_invert(mat):
    return [[1 - val for val in reversed(row)] for row in mat]

ผลลัพธ์

[[1, 0, 0], [1, 0, 1], [0, 1, 1]]