Golang 旋转矩阵元素

Golang 旋转矩阵元素

在本文中,我们将编写一个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

结论

在本文中,我们成功地执行了一个golang代码来旋转数组元素,并附有示例。这里我们看到了三个不同的示例,第一个示例中,我们将矩阵顺时针旋转90度。第二个示例中,我们将矩阵旋转N次。第三个示例中,我们将矩阵旋转180度。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程