package main
import (
"fmt"
)
func multiplyMatrices(A, B [][]int) [][]int {
rowsA, colsA := len(A), len(A[0])
rowsB, colsB := len(B), len(B[0])
if colsA != rowsB {
fmt.Println("Matrix multiplication is not valid.")
return nil
}
// Initialize result matrix
result := make([][]int, rowsA)
for i := range result {
result[i] = make([]int, colsB)
}
// Perform multiplication
for i := 0; i < rowsA; i++ {
for j := 0; j < colsB; j++ {
for k := 0; k < colsA; k++ {
result[i][j] += A[i][k] * B[k][j]
}
}
}
return result
}
func printMatrix(matrix [][]int) {
for _, row := range matrix {
fmt.Println(row)
}
}
func main() {
// Define matrices A and B
A := [][]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
B := [][]int{{4, 6}, {7, 3}, {1, 2}}
result := multiplyMatrices(A, B)
if result != nil {
fmt.Println("Matrix A:")
printMatrix(A)
fmt.Println("Matrix B:")
printMatrix(B)
fmt.Println("Result: Matrix A * Matrix B:")
printMatrix(result)
}
}
/*
run:
Matrix A:
[1 2 3]
[4 5 6]
[7 8 9]
Matrix B:
[4 6]
[7 3]
[1 2]
Result: Matrix A * Matrix B:
[21 18]
[57 51]
[93 84]
*/