package Ġy 2 0 1 9 Ċ Ċ object ĠD 8 A Ġ{ ĊĠ Ġfun Ġsolve ( input : ĠString , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġsurface Ġ= Ġwidth Ġ* Ġheight ĊĠĠĠ Ġval Ġlayers Count Ġ= Ġinput . length Ġ/ Ġsurface ĊĠĠĠ Ġval Ġlayers Ġ= Ġ( 0 Ġuntil Ġlayers Count ). map Ġ{ ĊĠĠĠĠĠ Ġinput . sub Sequence ( surface Ġ* Ġit , Ġsurface Ġ* Ġ( it Ġ+ Ġ 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmin Zero Ġ= Ġlayers . min By Ġ{ Ġit . count Ġ{ Ġit Ġ== Ġ' 0 ' Ġ} Ġ} !! ĊĠĠĠ Ġval Ġones Ġ= Ġmin Zero . count Ġ{ Ġit Ġ== Ġ' 1 ' Ġ} ĊĠĠĠ Ġval Ġtw os Ġ= Ġmin Zero . count Ġ{ Ġit Ġ== Ġ' 2 ' Ġ} ĊĊĠĠĠ Ġreturn Ġones Ġ* Ġtw os ĊĠ Ġ} Ċ } Ċ Ċ object ĠD 8 B Ġ{ ĊĠ Ġfun Ġdecode ( input : ĠString , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġval Ġsurface Ġ= Ġwidth Ġ* Ġheight ĊĊĠĠĠ Ġval Ġlayers Count Ġ= Ġinput . length Ġ/ Ġsurface ĊĠĠĠ Ġval Ġlayers Ġ= Ġ( 0 Ġuntil Ġlayers Count ). map Ġ{ ĊĠĠĠĠĠ Ġinput . sub Sequence ( surface Ġ* Ġit , Ġsurface Ġ* Ġ( it Ġ+ Ġ 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ( 0 Ġuntil Ġheight ). map Ġ{ Ġy Ġ-> ĊĠĠĠĠĠ Ġ( 0 Ġuntil Ġwidth ). map Ġ{ Ġx Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġx Ġ+ Ġwidth Ġ* Ġy ĊĠĠĠĠĠĠĠ Ġval Ġlayer Ġ= Ġlayers . first Ġ{ Ġit [ cursor ] Ġ!= Ġ' 2 ' Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġlayer [ cursor ] ĊĠĠĠĠĠĠĠ Ġwhen Ġ( color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ' 0 ' Ġ-> Ġ' Ġ' ĊĠĠĠĠĠĠĠĠĠ Ġ' 1 ' Ġ-> Ġ' X ' ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" What Ġdoes Ġ$ color Ġmean ?") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. join ToString ("\ n ") Ġ{ ĊĠĠĠĠĠ Ġit . join ToString ("") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }