Go語言程式:旋轉矩陣元素


在這篇文章中,我們將編寫一個 Go 語言程式來旋轉給定的矩陣元素。

使用外部函式旋轉矩陣

以下程式碼演示瞭如何將矩陣逆時針旋轉 90 度任意次數。

演算法

步驟 1 − 匯入 fmt 包。

步驟 2 − 建立一個函式來旋轉陣列元素。此函式將要旋轉的陣列作為引數。

步驟 3 − 還將陣列要移動的次數作為引數。此外,初始化一個空矩陣以儲存最終結果。

步驟 4 − 在函式中使用兩個 for 迴圈來遍歷矩陣,並在每次迭代時更新新矩陣中不同行的元素。返回最終獲得的矩陣。

步驟 5 − 開始 main() 函式。在這裡,建立一個 3 X 3 矩陣並在螢幕上列印它。

步驟 6 − 透過傳遞相應的引數呼叫 rotateMatrix() 函式,並將獲得的結果儲存在一個單獨的變數中。

步驟 7 − 使用 for 迴圈和 fmt.Println() 函式在螢幕上列印最終結果。

示例

package main
import "fmt"

// function to rotate matrix
func rotateMatrix(X [][]int, n int) [3][3]int {
   var temp [3][3]int
   for i := 0; i < n; i++ {
      for j := 0; j < n; j++ {
         temp[n-j-1][i] = X[i][j]
      }
   }
   return temp
}
func main() {
   mat := [][]int{
      {10, 1, 2},
      {4, 5, 6},
      {8, 9, 10},
   }
   fmt.Println("The given matrix is: \n")
   for i := 0; i < 3; i++ {
      for j := 0; j < 3; j++ {
         fmt.Print(mat[i][j], "\t")
      }
      fmt.Println()
   }
   fmt.Println()
   var n int = 3
   result := rotateMatrix(mat, n)
   fmt.Println("The matrix obtained after rotating the above matrix to", n, "Positions is:")
   fmt.Println()
   for i := 0; i < 3; i++ {
      for j := 0; j < 3; j++ {
         fmt.Print(result[i][j], "\t")
      }
      fmt.Println()
   }
}

輸出

The given matrix is: 

10	1	2	
4	5	6	
8	9	10	

The matrix obtained after rotating the above matrix to 3 Positions is:

2	6	10	
1	5	9	
10	4	8

將陣列元素順時針旋轉 N 次

在這個例子中,我們將編寫一個 Go 語言程式,將陣列元素順時針移動任意次數。

演算法

步驟 1 − 匯入 fmt 包。

步驟 2 − 開始 main() 函式。在這裡,建立一個 3 X 3 矩陣並在螢幕上列印它。

步驟 3 − 使用 for 迴圈和 fmt.Println() 函式在螢幕上列印最終結果。

步驟 4 − 使用 for 迴圈遍歷陣列,並分別將陣列的位置順時針移動。

步驟 5 − 現在,使用 fmt.Println() 函式在螢幕上列印陣列。

示例

package main
import "fmt"

// calling main()
func main() {

   // initializing a 3 X 3 matrix
   mat := [3][3]int{
      {1, 3, 2},
      {4, 5, 6},
      {8, 9, 10},
   }
   fmt.Println("The given matrix is: \n")
   for i := 0; i < 3; i++ {
      for j := 0; j < 3; j++ {
         fmt.Print(mat[i][j], "\t")
      }
      fmt.Println()
   }
   var N int = 3
   fmt.Println()
   fmt.Println("The matrix obtained after rotating the above matrix to", N, "Positions clock wise is:")
   fmt.Println()
   for i := N - 1; i >= 0; i-- {
      for j := N - 1; j >= 0; j-- {
         fmt.Print(mat[i][j], "\t")
      }
      fmt.Println()
   }
}

輸出

The given matrix is: 

1	3	2	
4	5	6	
8	9	10	

The matrix obtained after rotating the above matrix to 3 Positions clock wise is:

10	9	8	
6	5	4	
2	3	1

將陣列元素旋轉 180 度

在這個例子中,我們將編寫一個 Go 程式,將矩陣元素旋轉 180 度。

演算法

步驟 1 − 匯入 fmt 包。

步驟 2 − 建立名為 reverseColumns()、transpose() 和 printMatrix() 的函式,分別用於反轉矩陣的列、查詢其轉置和列印元素。

步驟 3 − 還將矩陣作為引數傳遞給函式。

步驟 4 − 在這些函式中,我們使用 for 迴圈來執行相應的操作。

步驟 5 − 開始 main() 函式。在這裡,建立一個 3 X 3 矩陣並在螢幕上列印它。

步驟 6 − 透過將陣列作為引數呼叫 rotate180() 和 printMatrix() 函式。

示例

package main
import "fmt"
func reverseColumns(arr [][]int) {
   var c int = 3
   for i := 0; i < 3; i++ {
      for j, k := 0, c-1; j < k; j, k = j+1, k-1 {
         t := arr[j][i]
         arr[j][i] = arr[k][i]
         arr[k][i] = t
      }
   }
}
func transpose(arr [][]int) {
   for i := 0; i < 3; i++ {
      for j := i; j < 3; j++ {
         t := arr[i][j]
         arr[i][j] = arr[j][i]
         arr[j][i] = t
      }
   }
}
func printMatrix(arr [][]int) {
   for i := 0; i < 3; i++ {
      for j := 0; j < 3; j++ {
         fmt.Print(arr[i][j], "\t")
      }
      fmt.Println()
   }
}
func rotate180(arr [][]int) {
   transpose(arr)
   reverseColumns(arr)
   transpose(arr)
   reverseColumns(arr)
}

// calling main()
func main() {

   // initializing a 3 X 3 matrix
   mat := [][]int{
      {1, 3, 2},
      {4, 5, 6},
      {8, 9, 10},
   }
   
   // printing matrix
   fmt.Println("The given matrix is: \n")
   for i := 0; i < 3; i++ {
      for j := 0; j < 3; j++ {
         fmt.Print(mat[i][j], "\t")
      }
      fmt.Println()
   }
   fmt.Println()
   fmt.Println("The matrix obtained after rotating the above matrix to", 3, "Positions clock wise is:")
   fmt.Println()
   rotate180(mat)
   printMatrix(mat)
}

輸出

The given matrix is: 

1	3	2	
4	5	6	
8	9	10	

The matrix obtained after rotating the above matrix to 3 Positions clock wise is:

10	9	8	
6	5	4	
2	3	1

結論

在這篇文章中,我們成功地執行了一個 Go 語言程式碼來旋轉陣列元素以及示例。我們在這裡看到了三個不同的例子,在第一個例子中;我們將矩陣順時針旋轉了 90 度。在第二個例子中,我們將矩陣旋轉了 N 次,在第三個例子中,我們將矩陣旋轉了 180 度。

更新於:2023年1月2日

瀏覽量:674

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.