Skip to content

Commit d7c80f9

Browse files
Diagonal traversal and diagonal sort in a matrix
1 parent 74df26f commit d7c80f9

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

Matrix/DiagonalTraversal.kt

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package Matrix
2+
import java.util.*
3+
class DiagonalTraversal {
4+
var map = mutableMapOf<Int, ArrayList<Int>>()
5+
fun printTraversal(matrix : Array<Array<Int>>) : Array<Array<Int>>{
6+
println("-----------PRINTING THE MATRIX DIAGONALLY---------------------")
7+
var index = 0
8+
for(i in 0..matrix.size-1){
9+
var j : Int = i
10+
var k : Int = 0
11+
var list = arrayListOf<Int>()
12+
while(k < matrix[0].size && j>=0){
13+
print("${matrix[j][k]} ")
14+
list.add(matrix[j][k])
15+
k++
16+
j--
17+
}
18+
Collections.sort(list)
19+
map.put(index, list)
20+
index++
21+
println()
22+
}
23+
24+
for(i in 1..matrix[0].size-1){
25+
var j = i
26+
var k = matrix.size-1
27+
var list = arrayListOf<Int>()
28+
while(k>=0 && j<matrix.size){
29+
print("${matrix[k][j]} ")
30+
list.add(matrix[k][j])
31+
k--
32+
j++
33+
}
34+
Collections.sort(list)
35+
map.put(index, list)
36+
index++
37+
println()
38+
}
39+
return changeToDiagonalSort(matrix)
40+
}
41+
// After the above function, we have all the sorted elements diagonally in map with value of arrayList
42+
43+
private fun changeToDiagonalSort(matrix : Array<Array<Int>>) : Array<Array<Int>>{
44+
var index = 0
45+
for(i in 0..matrix.size-1){
46+
var j = i
47+
var k = 0
48+
var arrIndex = 0
49+
while(k <matrix[0].size && j>=0){
50+
matrix[j][k] = map.get(index)!!.get(arrIndex)
51+
arrIndex++
52+
k++
53+
j--
54+
}
55+
index++
56+
}
57+
for(i in 1..matrix[0].size-1) {
58+
var j = i
59+
var k = matrix.size - 1
60+
var arrIndex = 0
61+
while (k >= 0 && j < matrix.size) {
62+
matrix[k][j] = map.get(index)!!.get(arrIndex)
63+
arrIndex++
64+
k--
65+
j++
66+
}
67+
index++
68+
}
69+
return matrix
70+
}
71+
}
72+
73+
fun main(args : Array<String>){
74+
val matrix = arrayOf(
75+
arrayOf(1,2,1,6,5),
76+
arrayOf(1,4,9,2,3),
77+
arrayOf(9,5,2,7,1),
78+
arrayOf(8,1,6,2,3),
79+
arrayOf(9,3,9,7,11)
80+
)
81+
82+
val obj = DiagonalTraversal()
83+
84+
var sortedResult = obj.printTraversal(matrix)
85+
86+
println()
87+
println("---------------------DIAGONALLY SORTED MATRIX------------------------\n")
88+
for(i in 0..matrix.size-1){
89+
for(j in 0..matrix[i].size-1){
90+
print("${matrix[i][j]} ")
91+
}
92+
println()
93+
}
94+
}

0 commit comments

Comments
 (0)