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

ตรวจสอบว่าเมทริกซ์สามารถแปลงเป็นเมทริกซ์อื่นได้โดยการแปลงเมทริกซ์ย่อยสแควร์ใน Python


สมมติว่าเรามี N X M สองตัวที่เรียกว่า mat1 และ mat2 ในการดำเนินการ เราสามารถทรานสโพสเมทริกซ์ย่อยกำลังสองใน mat1 เราต้องตรวจสอบว่าเราสามารถรับ mat2 จาก mat1 ได้หรือไม่โดยดำเนินการตามที่กำหนด

ดังนั้นหากอินพุตเป็นแบบ

5 6 7
1 2 3
6 8 9


5 6 2
1 7 3
6 8 9

ผลลัพธ์จะเป็น True เพราะหากเราได้รับทรานสโพสของเมทริกซ์ย่อยด้านบนขวาขนาด 2x2 ของ mat1 เราก็จะได้ mat2

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • row :=จำนวนแถวของเมทริกซ์
  • column :=จำนวนคอลัมน์ของเมทริกซ์
  • สำหรับฉันในช่วง 0 ถึงแถว - 1 ทำ
    • temp1 :=รายการใหม่ temp2 :=รายการใหม่
    • r :=i, col :=0
    • ในขณะที่ r>=0 และ col <คอลัมน์ ทำ
      • แทรก mat1[r, col] ลงใน temp1
      • แทรก mat2[r, col] ลงใน temp2
      • r :=r - 1, col :=col + 1
    • เรียงลำดับรายการ temp1 และ temp2
    • สำหรับฉันในช่วง 0 ถึงขนาดของ temp1 - 1 ทำ
      • ถ้า temp1[i] ไม่เหมือนกับ temp2[i] แล้ว
        • คืนค่าเท็จ
  • สำหรับ j ในช่วง 1 ถึงคอลัมน์ - 1 ทำ
    • temp1 :=รายการใหม่ temp2 :=รายการใหม่
    • r :=row - 1, col :=j
    • ในขณะที่ r>=0 และ col <คอลัมน์ ทำ
      • แทรก mat1[r, col] ลงใน temp1
      • แทรก mat2[r, col] ลงใน temp2
      • r :=r - 1, col :=col + 1
    • เรียงลำดับรายการ temp1 และ temp2
    • สำหรับฉันในช่วง 0 ถึงขนาดของ temp1 - 1 ทำ
      • ถ้า temp1[i] ไม่เหมือนกับ temp2[i] แล้ว
        • คืนค่าเท็จ
  • คืนค่า True

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def dissolve(mat1, mat2):row =len(mat1) column =len(mat1[0]) for i in range(row):temp1 =[] temp2 =[] r =i col =0 while r>=0 และ col <คอลัมน์:temp1.append(mat1[r][col]) temp2.append(mat2[r][col]) r -=1 col +=1 temp1.sort() temp2.sort() สำหรับฉันในช่วง (len (temp1)):ถ้า temp1[i] !=temp2[i]:คืนค่า False สำหรับ j ในช่วง (1 คอลัมน์):temp1 =[] temp2 =[] r =row - 1 col =j ในขณะที่ r>=0 และ col <คอลัมน์:temp1.append(mat1[r][col]) temp2.append(mat2[r][col]) r -=1 col +=1 temp1.sort() temp2 sort() สำหรับฉันในช่วง (len(temp1)):ถ้า temp1[i] !=temp2[i]:return ค่าเท็จ return Truemat1 =[ [5, 6, 7], [1, 2, 3], [6 , 8, 9]]mat2 =[ [5, 6, 2], [1, 7, 3], [6, 8, 9]]print(solve(mat1, mat2))

อินพุต

<ก่อนหน้า>[ [5, 6, 7], [1, 2, 3], [6, 8, 9]],[ [5, 6, 2], [1, 7, 3], [6, 8 , 9]]

ผลลัพธ์

จริง