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