@ file : Suppress (" Package Directory Mismatch ") Ċ Ċ package Ġsolutions . y 2 0 . d 1 1 Ċ Ċ import Ġcollections .* Ċ import Ġgrid .* Ċ import Ġhelpers .* Ċ import Ġkotlinx . coroutines .* Ċ Ċ val Ġx xxxx Ġ= ĠClock ( 6 , Ġ 3 ); Ċ Ċ private Ġfun Ġpart 1 ( data : ĠData ) Ġ{ Ċ ĉ val Ġg 1 Ġ= Ġdata . e (). grid () ĊĊ ĉ var Ġg 2 Ġ= Ġg 1 . map Ġ{ Ġit Ġ} Ċ ĉ while Ġ( true ) Ġ{ ĊĊĉ ĉ var Ġcont Ġ= Ġfalse Ċĉ ĉ val Ġg 3 Ġ= Ċĉĉĉ ĉ g 2 . map Indexed Ġ{ Ġp , Ġc Ġ-> Ċĉĉĉĉ ĉ if Ġ( c Ġ== Ġ'.') Ċĉĉĉĉĉ ĉ return @ map Indexed Ġc Ċĉĉĉĉ ĉ val Ġcc Ġ= Ġp . get Oct Ne ighbours (). filter Ġ{ Ġit Ġin Ġg 1 . bounds Ġ}. count Ġ{ Ġg 2 [ it ] Ġ== Ġ'#' Ġ} Ċĉĉĉĉ ĉ if Ġ( c Ġ== Ġ' L ') Ġ{ Ċĉĉĉĉĉ ĉ if Ġ( cc Ġ== Ġ 0 ) Ġ{ Ċĉĉĉĉĉĉ ĉ cont Ġ= Ġtrue Ċĉĉĉĉĉĉ ĉ ' #' Ċĉĉĉĉĉ ĉ } Ġelse Ġ' L ' Ċĉĉĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉĉĉ ĉ if Ġ( cc Ġ>= Ġ 4 ) Ġ{ Ċĉĉĉĉĉĉ ĉ cont Ġ= Ġtrue ĊĊĉĉĉĉĉĉ ĉ ' L ' Ċĉĉĉĉĉ ĉ } Ġelse Ċĉĉĉĉĉĉ ĉ ' #' Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } ĊĊĉ ĉ g 2 Ġ= Ġg 3 . grid () ĊĊĉ ĉ // g 2 . items . sum By { it . count { it Ġ== Ġ'# '}} . log () Ċĉ ĉ // g 2 Ġ. items . map Indexed { i , a Ġ-> Ċĉ ĉ // ĉ a . log () Ċĉ ĉ //} Ċĉ ĉ if Ġ(! cont ) Ċĉĉ ĉ break ĊĊ ĉ } Ċ ĉ g 2 . items . sum By Ġ{ Ġit . count Ġ{ Ġit Ġ== Ġ'#' Ġ} Ġ}. log () Ċ } Ċ Ċ private Ġfun Ġpart 2 ( data : ĠData ) Ġ{ Ċ ĉ val Ġg 1 Ġ= Ġdata . e (). grid () ĊĊ ĉ var Ġg 2 Ġ= Ġg 1 . map Ġ{ Ġit Ġ} Ċ ĉ while Ġ( true ) Ġ{ ĊĊĉ ĉ var Ġcont Ġ= Ġfalse Ċĉ ĉ val Ġg 3 Ġ= Ċĉĉĉ ĉ g 2 . map Indexed Ġ{ Ġp , Ġc Ġ-> Ċĉĉĉĉ ĉ if Ġ( c Ġ== Ġ'.') Ċĉĉĉĉĉ ĉ return @ map Indexed Ġc Ċĉĉĉĉ ĉ val Ġcc Ġ= Ġp . get Oct Ne ighbours (). map { Ċĉĉĉĉĉ ĉ var Ġpp Ġ= Ġit Ċĉĉĉĉĉ ĉ var Ġdiff Ġ= Ġit Ġ- Ġp Ċĉĉĉĉĉ ĉ while ( pp Ġin Ġg 1 . bounds ){ Ċĉĉĉĉĉĉ ĉ if ( g 2 [ pp ] Ġ!= Ġ'.') Ċĉĉĉĉĉĉĉ ĉ return @ map Ġg 2 [ pp ] Ċĉĉĉĉĉĉ ĉ pp Ġ+= Ġdiff Ċĉĉĉĉĉ ĉ } Ċĉĉĉĉĉ ĉ '. ' Ċĉĉĉĉ ĉ }. count Ġ{ Ġit Ġ== Ġ'#' Ġ} Ċĉĉĉĉ ĉ if Ġ( c Ġ== Ġ' L ') Ġ{ Ċĉĉĉĉĉ ĉ if Ġ( cc Ġ== Ġ 0 ) Ġ{ Ċĉĉĉĉĉĉ ĉ cont Ġ= Ġtrue Ċĉĉĉĉĉĉ ĉ ' #' Ċĉĉĉĉĉ ĉ } Ġelse Ġ' L ' Ċĉĉĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉĉĉ ĉ if Ġ( cc Ġ>= Ġ 5 ) Ġ{ Ċĉĉĉĉĉĉ ĉ cont Ġ= Ġtrue ĊĊĉĉĉĉĉĉ ĉ ' L ' Ċĉĉĉĉĉ ĉ } Ġelse Ċĉĉĉĉĉĉ ĉ ' #' Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } ĊĊĉ ĉ g 2 Ġ= Ġg 3 . grid () ĊĊĉ ĉ // g 2 . items . sum By { it . count { it Ġ== Ġ'# '}} . log () Ċĉ ĉ // g 2 Ġ. items . map Indexed { i , a Ġ-> Ċĉ ĉ // ĉ a . log () Ċĉ ĉ //} Ċĉ ĉ if Ġ(! cont ) Ċĉĉ ĉ break ĊĊ ĉ } Ċ ĉ g 2 . items . sum By Ġ{ Ġit . count Ġ{ Ġit Ġ== Ġ'#' Ġ} Ġ}. log () Ċ } Ċ Ċ private Ġtype alias ĠData Ġ= ĠList < String > Ċ Ċ fun Ġmain () Ġ{ Ċ ĉ val Ġdata : ĠData Ġ= Ġget Lines ( 2 0 2 0 _ 1 1 ) Ċ ĉ // part 1 ( data ) Ċ ĉ part 2 ( data ) Ċ } ĊĊ Ċ fun ĠAny ?. log () Ġ= Ġprintln ( this )