package Ġsep _ challenge 2 0 2 1 Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġmatrix Ġ= ĠarrayOf ( int ArrayOf ( 1 , 2 , 3 ), Ġint ArrayOf ( 4 , 5 , 6 ), Ġint ArrayOf ( 7 , 8 , 9 )) ĊĠĠĠ Ġval Ġres Ġ= Ġsp iral Order ( matrix ) ĊĠĠĠ Ġprintln ( res ) Ċ } Ċ Ċ fun Ġsp iral Order ( matrix : ĠArray < IntArray >): ĠList < Int > Ġ{ ĊĠĠĠ Ġvar Ġbottom Ġ= Ġmatrix . size Ġ- Ġ 1 ĊĠĠĠ Ġvar Ġright Ġ= Ġmatrix [ 0 ]. size Ġ- Ġ 1 ĊĠĠĠ Ġvar Ġtop Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġleft Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġdir Ġ= Ġ" R " ĊĠĠĠ Ġvar ĠrowIndex Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġcol Index Ġ= Ġ 0 ĊĠĠĠ Ġval Ġresult Ġ= ĠArrayList < Int >() ĊĠĠĠ Ġwhile Ġ( left Ġ<= Ġright Ġ&& Ġtop Ġ<= Ġbottom ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( dir ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" R " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( col Index Ġ< Ġright ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( matrix [ rowIndex ][ col Index ++ ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Ġ= Ġ" D " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" D " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( rowIndex Ġ< Ġbottom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( matrix [ rowIndex ++ ][ col Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Ġ= Ġ" L " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" L " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( col Index Ġ> Ġleft ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( matrix [ rowIndex ][ col Index -- ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Ġ= Ġ" U " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" U " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( rowIndex Ġ> Ġtop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( matrix [ rowIndex -- ][ col Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Ġ= Ġ" R " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġresult . add ( matrix [ rowIndex ][ col Index ]) ĊĠĠĠ Ġreturn Ġresult Ċ } ĊĊ