旋转矩阵元素的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
在这个例子中,我们将编写一个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
在这个例子中,我们将写一个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度。