import Ġjava . io . File Ċ import Ġjavax . image io . Image IO Ċ import Ġjava . awt . image . Buffered Image Ċ Ċ import Ġkotlin . math . abs Ċ Ċ object ĠRead Mo ses Ġ{ ĊĠ Ġ@ Jvm Static Ġfun Ġmain ( var arg Ġargs : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġ( path , Ġy _ zero , Ġy _ step ) Ġ= Ġargs ĊĠĠĠ Ġval Ġimage Ġ= ĠImage IO . read ( File ( path )) ĊĠĠĠ Ġprintln ( image ) ĊĠĠĠ Ġval Ġreader Ġ= ĠMo ses Reader ( y _ zero . toInt (), Ġy _ step . toInt ()) ĊĠĠĠ Ġprintln ( reader . run On ( image )) ĊĠ Ġ} Ċ } Ċ Ċ type alias ĠColor Seq Ġ= ĠSequence < Pair < Int , ĠInt >> Ċ class ĠMo ses Reader ( val Ġy _ zero : ĠInt , Ġval Ġy _ step : ĠInt ) Ġ{ ĊĠ Ġprivate Ġfun Ġline Arrange ment ( img : ĠBufferedImage ): ĠColor Seq Ġ= Ġsequence Ġ{ ĊĠĠĠ Ġfor Ġ( y Ġin Ġy _ zero Ġuntil Ġimg . height Ġstep Ġy _ step ) ĊĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġimg . width ) Ġyield ( x Ġto Ġimg . get RGB ( x , Ġy )) ĊĠ Ġ} ĊĠ Ġprivate Ġfun Ġblack White ( seq : ĠColor Seq ) Ġ= Ġseq . map Ġ{ Ġit . first Ġto Ġ( abs ( it . second ) Ġ> ĠLE VEL _ BLACK ) Ġ} ĊĠ Ġfun Ġrun On ( img : ĠBufferedImage ): ĠSequence < Int > Ġ= Ġsequence Ġ{ ĊĠĠĠ Ġval Ġpoints Ġ= Ġblack White ( line Arrange ment ( img )) ĊĠĠĠ Ġval Ġlines : ĠSequence < Sequence < Int >> Ġ= Ġsequence Ġ{ ĊĠĠĠĠĠ Ġfun Ġline ( pos : ĠInt ) Ġ= Ġpoints . drop ( pos ). zip With Next (). take While Ġ{ Ġval Ġ( p 0 , Ġp 1 ) Ġ= Ġit ; Ġp 1 . first Ġ> Ġp 0 . first Ġ} ĊĠĠĠĠĠ Ġvar Ġposition Ġ= Ġ 0 ĊĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ Ġval Ġln Ġ= Ġline ( position ) Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject ĠConstants Ġ{ ĊĠĠĠ Ġconst Ġval ĠLE VEL _ BLACK Ġ= Ġ 0 xFF * 0 xFF * 0 xFF ĊĠ Ġ} Ċ } Ċ