A simple matrix implementation for kotlin using Kotlin DSL
val matrix = Matrix {
row(1, 2, 3)
row(4, 5, 6)
row(7, 8, 9)
}val matrix = Matrix {
row(2, 4)
row(8, 10)
row(9, 22)
}
val rowSize = matrix.rowSize
val columnSize = matrix.columnSize
println("$rowSize * $columnSize matrix")3 * 2 matrix
val element = matrix[1, 2]val row = matrix.getRow(0)val column = matrix.getColumn(0)val scale = Matrix {
row(5, 0, 0)
row(0, 5, 0)
row(0, 0, 5)
}
val point = Matrix {
row(10)
row(7)
row(2)
}
val result = scale * point
println(result)┌──────┐
│ 50.0 │
├──────┤
│ 35.0 │
├──────┤
│ 10.0 │
└──────┘
val matrix1 = Matrix {
row(1, 2, 3)
row(4, 5, 6)
row(7, 8, 9)
}
val matrix2 = Matrix {
row(1, 2, 3)
row(4, 5, 6)
row(7, 8, 9)
}
val result = matrix1 + matrix2
println(result)┌──────┬──────┬──────┐
│ 2.0 │ 4.0 │ 6.0 │
├──────┼──────┼──────┤
│ 8.0 │ 10.0 │ 12.0 │
├──────┼──────┼──────┤
│ 14.0 │ 16.0 │ 18.0 │
└──────┴──────┴──────┘
val matrix1 = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 18)
}
val matrix2 = Matrix {
row(1, 2, 3)
row(4, 5, 6)
row(7, 8, 9)
}
val result = matrix1 - matrix2
println(result)┌─────┬─────┬─────┐
│ 1.0 │ 2.0 │ 3.0 │
├─────┼─────┼─────┤
│ 4.0 │ 5.0 │ 6.0 │
├─────┼─────┼─────┤
│ 7.0 │ 8.0 │ 9.0 │
└─────┴─────┴─────┘
val matrix = Matrix {
row(2, 4)
row(8, 10)
}
val transposed = matrix.transpose()
println(transposed)┌─────┬──────┐
│ 2.0 │ 8.0 │
├─────┼──────┤
│ 4.0 │ 10.0 │
└─────┴──────┘
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 18)
}
val newMatrix = matrix.map {
it/2
}
println(newMatrix)┌─────┬─────┬─────┐
│ 1.0 │ 2.0 │ 3.0 │
├─────┼─────┼─────┤
│ 4.0 │ 5.0 │ 6.0 │
├─────┼─────┼─────┤
│ 7.0 │ 8.0 │ 9.0 │
└─────┴─────┴─────┘
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 18)
}
val index = matrix.indexOf(2.0)
println(index)(0, 0)
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 2)
}
val index = matrix.lastIndexOf(2.0)
println(index)(2, 2)
Using forEach
val matrix = Matrix {
row(2, 4)
row(8, 10)
}
matrix.forEach {
println(it)
}2.0
4.0
8.0
10.0
Using forEachIndexed
val matrix = Matrix {
row(2, 4)
row(8, 10)
}
matrix.forEachIndexed { x, y, d ->
println("($x, $y) = $d")
}(0, 0) = 2.0
(1, 0) = 4.0
(0, 1) = 8.0
(1, 1) = 10.0
val matrix = Matrix {
row(2, 4)
row(8, 10)
}
val list = matrix.toList()
println(list)[2.0, 4.0, 8.0, 10.0]
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 2)
}
val sum = matrix.sum()val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 2)
}
val flag = matrix.contains(4)val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 2)
}
val flag = matrix.containsAll(listOf(2, 4, 10))🚧 Working on it 🚧
Copyright 2022 mhssn
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.