package main
import (
"fmt"
"sort"
)
func transpose(matrix [][]string) [][]string {
rows := len(matrix)
cols := len(matrix[0])
transposed := make([][]string, cols)
for i := range transposed {
transposed[i] = make([]string, rows)
for j := range matrix {
transposed[i][j] = matrix[j][i]
}
}
return transposed
}
func sortColumns(matrix [][]string) [][]string {
// Transpose, sort each column, and transpose back
transposed := transpose(matrix)
for i := range transposed {
sort.Strings(transposed[i])
}
return transpose(transposed)
}
func printMatrix(matrix [][]string) {
for _, row := range matrix {
fmt.Println(row)
}
}
func main() {
matrix := [][]string{
{"ccc", "zzzz", "x"},
{"eeee", "aaa", "ffff"},
{"uu", "hhh", "uuu"},
{"bbb", "gg", "yyyyyy"},
}
fmt.Println("Original Matrix:")
printMatrix(matrix)
sortedMatrix := sortColumns(matrix)
fmt.Println("\nSorted Matrix:")
printMatrix(sortedMatrix)
}
/*
run:
Original Matrix:
[ccc zzzz x]
[eeee aaa ffff]
[uu hhh uuu]
[bbb gg yyyyyy]
Sorted Matrix:
[bbb aaa ffff]
[ccc gg uuu]
[eeee hhh x]
[uu zzzz yyyyyy]
*/