package Ġcom . mont ec ar lo . app Ċ Ċ import Ġedu . uci . ics . j ung . visualization . Visualization Image Server Ċ import Ġorg . apache . poi . util . Units Ċ import Ġorg . apache . poi . x wp f . user model . Break Type Ċ import Ġorg . apache . poi . x wp f . user model . X WPF Document Ċ import Ġjava . awt . Dimension Ċ import Ġjava . awt . geom . Point 2 D Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . math . BigInteger Ċ import Ġjava . util . concurrent . Thread Local Random Ċ import Ġjavax . image io . Image IO ĊĊ Ċ fun Ġfind De viation ( nums : ĠList < Int >, Ġmean : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠ Ġvar Ġsquare Sum Ġ= Ġ 0 . 0 ĊĠĠĠ Ġnums . indices . forEach Ġ{ Ġi Ġ-> Ġsquare Sum Ġ+= ĠMath . pow ( nums [ i ] Ġ- Ġmean , Ġ 2 . 0 ) Ġ} ĊĠĠĠ Ġreturn ĠMath . sqrt ( square Sum Ġ/ Ġ( nums . size Ġ- Ġ 1 )) Ċ } Ċ Ċ fun Ġmean 2 ( list : ĠList < Int >): ĠDouble Ġ{ ĊĠĠĠ Ġvar Ġavg Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġt Ġ= Ġ 1 ĊĠĠĠ Ġfor Ġ( x Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠ Ġavg Ġ+= Ġ( x Ġ- Ġavg ) Ġ/ Ġt ĊĠĠĠĠĠĠĠ Ġ++ t ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġavg Ċ } Ċ Ċ fun Ġ< T , ĠY > ĠPair < T , ĠY >. flip () Ġ= Ġsecond Ġto Ġfirst Ċ fun ĠPair < Number , ĠNumber >. in Order () Ġ= Ġif Ġ( first . toInt () Ġ< Ġsecond . toInt ()) Ġthis Ġelse Ġsecond Ġto Ġfirst Ċ Ċ fun Ġ< T , ĠY > ĠPair < T , ĠY >. is Same () Ġ= Ġfirst Ġ== Ġsecond Ċ Ċ fun Ġ< E > ĠList < E >. choose Random (): ĠE ? Ġ= Ġif Ġ( size Ġ!= Ġ 0 ) Ġget ( Thread Local Random . current (). nextInt ( size )) Ġelse Ġnull Ċ Ċ inline Ġfun Ġ< T > ĠMutable List < T >. map In Place ( mut ator : Ġ( T ) Ġ-> ĠT ): ĠList < T > Ġ{ ĊĠĠĠ Ġval Ġiterate Ġ= Ġthis . list Iterator () ĊĠĠĠ Ġwhile Ġ( iterate . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠoldValue Ġ= Ġiterate . next () ĊĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġmut ator ( oldValue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( newValue Ġ!== ĠoldValue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterate . set ( newValue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġiterate . as Sequence (). toList () Ċ } Ċ Ċ private Ġfun Ġ< A , ĠB > ĠPair < A , ĠB >. isEmpty (): ĠBoolean Ġ= Ġthis . first Ġ== Ġ- 1 Ġ&& Ġthis . second Ġ== Ġ- 1 ĊĊ Ċ fun Ġmake Word Document ( images : ĠList < Buffered Image >) Ġ{ ĊĊĠĠĠ Ġval Ġd Ġ= ĠX WPF Document () ĊĠĠĠ Ġval Ġp Ġ= Ġd . create Paragraph () ĊĠĠĠ Ġval Ġr Ġ= Ġp . create Run () ĊĊĠĠĠ Ġd . document . body . add New Sect Pr (). add New Pg Mar (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Ġ= ĠBigInteger . valueOf ( 3 6 0 ) ĊĠĠĠĠĠĠĠ Ġright Ġ= ĠBigInteger . valueOf ( 3 6 0 ) ĊĠĠĠĠĠĠĠ Ġtop Ġ= ĠBigInteger . valueOf ( 3 6 0 ) ĊĠĠĠĠĠĠĠ Ġbottom Ġ= ĠBigInteger . valueOf ( 3 6 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġimages . forEach Indexed Ġ{ Ġindex , Ġbuffered Image Ġ-> ĊĠĠĠĠĠĠĠ Ġprintln (" Writing Ġto Ġdoc : Ġ$ index ") ĊĠĠĠĠĠĠĠ ĠByteArrayOutputStream (). let Ġ{ Ġos Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage IO . write ( buffered Image , Ġ" png ", Ġos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠByteArrayInputStream ( os . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index Ġ% Ġ 1 7 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr . add Picture ( stream , ĠX WPF Document . PI CTURE _ TYPE _ PNG , Ġ"$ index ", ĠUnits . to EM U ( 1 4 0 . 0 ), ĠUnits . to EM U ( 1 4 0 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ 0 ) Ġr . add Break ( Break Type . PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr . add Picture ( stream , ĠX WPF Document . PI CTURE _ TYPE _ PNG , Ġ"$ index ", ĠUnits . to EM U ( 4 5 0 . 0 ), ĠUnits . to EM U ( 4 5 0 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr . add Break ( Break Type . PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġout Ġ= ĠFileOutputStream (" images / doc 1 . docx ") ĊĠĠĠ Ġd . write ( out ) ĊĠĠĠ Ġout . flush () ĊĠĠĠ Ġout . close () Ċ } Ċ Ċ fun ĠPair < Number , ĠNumber >. getIndex In ( mat : ĠList < IntArray >): ĠPair < Pair < Int , ĠInt >, ĠPair < Int , ĠInt >> Ġ{ ĊĠĠĠ Ġvar Ġcoord : ĠPair < Int , ĠInt > Ġ= Ġ- 1 Ġto Ġ- 1 ĊĠĠĠ Ġvar Ġcoord 2 : ĠPair < Int , ĠInt > Ġ= Ġ- 1 Ġto Ġ- 1 ĊĊĠĠĠ Ġmat . forEach Indexed Ġ{ Ġx , Ġe Ġ-> ĊĠĠĠĠĠĠĠ Ġe . forEach Indexed Ġ{ Ġy , Ġe 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( first Ġ== Ġsecond ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġwhen Ġ( first ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmat [ x ][ y ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoord Ġ= Ġx Ġto Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoord 2 Ġ= Ġx Ġto Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( mat [ x ][ y ] Ġ== Ġfirst ) Ġ-> Ġcoord Ġ= Ġx Ġto Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( mat [ x ][ y ] Ġ== Ġsecond ) Ġ-> Ġcoord 2 Ġ= Ġx Ġto Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġcoord Ġto Ġcoord 2 Ċ } Ċ Ċ fun ĠList < IntArray >. print Matrix () Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġget ( i ). size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint ("" Ġ+ Ġthis [ i ][ j ] Ġ+ Ġif Ġ( this [ i ][ j ]. toString (). length Ġ== Ġ 1 ) Ġ" Ġ Ġ" Ġelse Ġ" Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġrotate Matrix ( list : ĠList < IntArray >, Ġtimes : ĠInt Ġ= Ġ 1 ): ĠList < IntArray > Ġ{ ĊĠĠĠ Ġval Ġmat Ġ= Ġlist . map Ġ{ Ġit . map Ġ{ Ġit Ġ}. to IntArray () Ġ} ĊĠĠĠ Ġval ĠN Ġ= Ġlist . size ĊĠĠĠ Ġ( 0 Ġuntil Ġtimes ). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil ĠN Ġ/ Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConsider Ġelements Ġin Ġgroup Ġof Ġ 4 Ġin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcurrent Ġsquare ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġx Ġuntil ĠN Ġ- Ġx Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstore Ġcurrent Ġcell Ġin Ġtemp Ġvariable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= Ġmat [ x ][ y ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmove Ġvalues Ġfrom Ġright Ġto Ġtop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmat [ x ][ y ] Ġ= Ġmat [ y ][ N Ġ- Ġ 1 Ġ- Ġx ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmove Ġvalues Ġfrom Ġbottom Ġto Ġright ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmat [ y ][ N Ġ- Ġ 1 Ġ- Ġx ] Ġ= Ġmat [ N Ġ- Ġ 1 Ġ- Ġx ][ N Ġ- Ġ 1 Ġ- Ġy ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmove Ġvalues Ġfrom Ġleft Ġto Ġbottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmat [ N Ġ- Ġ 1 Ġ- Ġx ][ N Ġ- Ġ 1 Ġ- Ġy ] Ġ= Ġmat [ N Ġ- Ġ 1 Ġ- Ġy ][ x ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassign Ġtemp Ġto Ġleft ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmat [ N Ġ- Ġ 1 Ġ- Ġy ][ x ] Ġ= Ġtemp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmat . toList () Ċ } Ċ Ċ fun Ġflip Matrix V ( list : ĠList < IntArray >): ĠList < IntArray > Ġ{ ĊĠĠĠ Ġval Ġmat Ġ= Ġlist . map Ġ{ Ġit . map Ġ{ Ġit Ġ}. to IntArray () Ġ} ĊĠĠĠ Ġval ĠN Ġ= Ġlist . size ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠN ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil ĠN Ġ/ Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= Ġmat [ i ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmat [ i ][ j ] Ġ= Ġmat [ i ][ N Ġ- Ġ 1 Ġ- Ġj ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmat [ i ][ N Ġ- Ġ 1 Ġ- Ġj ] Ġ= Ġtemp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmat . toList () Ċ } Ċ Ċ fun Ġflip Matrix H ( list : ĠList < IntArray >): ĠList < IntArray > Ġ{ ĊĠĠĠ Ġval Ġmat Ġ= Ġlist . map Ġ{ Ġit . map Ġ{ Ġit Ġ}. to IntArray () Ġ} ĊĠĠĠ Ġval ĠN Ġ= Ġlist . size ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠN Ġ/ Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġmat [ i ]. size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= Ġmat [ i ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmat [ i ][ j ] Ġ= Ġmat [ N Ġ- Ġ 1 Ġ- Ġi ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmat [ N Ġ- Ġ 1 Ġ- Ġi ][ j ] Ġ= Ġtemp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmat . toList () Ċ } ĊĊ Ċ fun ĠVisualization Image Server < Number , ĠNumber >. save Image ( key : ĠPair < Number , ĠNumber >, Ġpair : ĠPair < Number , ĠNumber >, Ġidx : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġimage Ġ= ĠgetImage ( Point 2 D . Double ( graph Layout . size . width Ġ/ Ġ 2 . 0 , Ġgraph Layout . size . width Ġ/ Ġ 2 . 0 ), ĠDimension ( 7 2 0 , Ġ 7 2 0 )) Ġas ĠBufferedImage ĊĠĠĠ ĠImage IO . write (( image ), Ġ" png ", ĠFile (" images /$ key $ pair -$ idx . png "). also Ġ{ Ġit . mkdir s () Ġ}) ĊĠĠĠ Ġprintln (" image : Ġ$ pair Ġwas Ġwritten Ġto Ġdisk ") ĊĠĠĠ Ġ// Thread . sleep ( 3 0 0 ) Ċ }