import Ġjava . io .* Ċ fun Ġprint _ day _ 1 3 () Ġ{ ĊĠĠĠ Ġval Ġyellow Ġ= Ġ"\ u 0 0 1 B [ 3 3 m " ĊĠĠĠ Ġval Ġreset Ġ= Ġ"\ u 0 0 1 b [ 0 m " ĊĠĠĠ Ġval Ġgreen Ġ= Ġ"\ u 0 0 1 B [ 3 2 m " ĊĠĠĠ Ġprintln ( yellow Ġ+ Ġ"- ". repeat ( 2 5 ) Ġ+ Ġ" Ad vent Ġof ĠCode Ġ- ĠDay Ġ 1 3 " Ġ+ Ġ"- ". repeat ( 2 5 ) Ġ+ Ġreset ) ĊĠĠĠ Ġprintln ( green ) ĊĠĠĠ Ġval Ġprocess Ġ= ĠRuntime . get Runtime (). exec (" fig let ĠTr ansparent ĠOrig ami Ġ- c Ġ- f Ġsmall ") ĊĠĠĠ Ġval Ġreader Ġ= ĠBufferedReader ( InputStream Reader ( process . inputStream )) ĊĠĠĠ Ġreader . forEach Line Ġ{ Ġprintln ( it ) Ġ} ĊĠĠĠ Ġprintln ( reset ) ĊĠĠĠ Ġprintln ( yellow Ġ+ Ġ"- ". repeat ( 3 3 ) Ġ+ Ġ" Output " Ġ+ Ġ"- ". repeat ( 3 3 ) Ġ+ Ġreset Ġ+ Ġ"\ n ") Ċ } Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġprint _ day _ 1 3 () ĊĠĠĠ ĠDay 1 3 (). part _ 1 () ĊĠĠĠ ĠDay 1 3 (). part _ 2 () ĊĠĠĠ Ġprintln ("\ n " Ġ+ Ġ"\ u 0 0 1 B [ 3 3 m " Ġ+ Ġ" =". repeat ( 7 2 ) Ġ+ Ġ"\ u 0 0 1 b [ 0 m " Ġ+ Ġ"\ n ") Ċ } Ċ Ċ class ĠDay 1 3 Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlines Ġ= ĠFile ("../ Input / day 1 3 . txt "). read Lines () ĊĠĠĠ Ġprivate Ġval Ġcoords Ġ= Ġlines . take While Ġ{ Ġit . trim () Ġ!= Ġ"" Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( x , Ġy ) Ġ= Ġit . split (",") ĊĠĠĠĠĠĠĠ Ġx . toInt () Ġto Ġy . toInt () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġfold s Ġ= Ġlines . drop ( coords . size Ġ+ Ġ 1 ) ĊĊĠĠĠ Ġfun Ġpart _ 1 () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġmax X Ġ= Ġcoords . max Of Ġ{ Ġit . first Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmax Y Ġ= Ġcoords . max Of Ġ{ Ġit . second Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġy Fold Ġ= Ġfold s . first (). startsWith (" fold Ġalong Ġy ") ĊĠĠĠĠĠĠĠ Ġval Ġfold Amount Ġ= Ġfold s . first (). split (" =" )[ 1 ]. toInt () ĊĊĠĠĠĠĠĠĠ Ġval Ġafter Fold Ġ= Ġif Ġ( y Fold ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Coords Ġ= Ġcoords . filter Ġ{ Ġit . second Ġ< Ġfold Amount Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( pair Ġin Ġcoords . filter Ġ{ it . second Ġ> Ġfold Amount } Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Coords . add ( pair . first Ġto Ġmax Y Ġ- Ġpair . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Coords ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Coords Ġ= Ġcoords . filter Ġ{ Ġit . first Ġ< Ġfold Amount Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( pair Ġin Ġcoords . filter Ġ{ it . first Ġ> Ġfold Amount } Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Coords . add ( max X Ġ- Ġpair . first Ġto Ġpair . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Coords ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln (" P uzzle Ġ 1 : Ġ" Ġ+ Ġafter Fold . distinct (). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpart _ 2 () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġfol ded Coords Ġ= Ġcoords ĊĠĠĠĠĠĠĠ Ġfold s . forEach Ġ{ Ġfold Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax X Ġ= Ġfol ded Coords . max Of Ġ{ Ġit . first Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Y Ġ= Ġfol ded Coords . max Of Ġ{ Ġit . second Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Fold Ġ= Ġfold . startsWith (" fold Ġalong Ġy ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfold Amount Ġ= Ġfold . split (" =" )[ 1 ]. toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġafter Fold Ġ= Ġif Ġ( y Fold ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Coords Ġ= Ġfol ded Coords . filter Ġ{ Ġit . second Ġ< Ġfold Amount Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( pair Ġin Ġfol ded Coords . filter Ġ{ it . second Ġ> Ġfold Amount } Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Coords . add ( pair . first Ġto Ġmax Y Ġ- Ġpair . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Coords ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Coords Ġ= Ġfol ded Coords . filter Ġ{ Ġit . first Ġ< Ġfold Amount Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( pair Ġin Ġfol ded Coords . filter Ġ{ it . first Ġ> Ġfold Amount } Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Coords . add ( max X Ġ- Ġpair . first Ġto Ġpair . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Coords ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfol ded Coords Ġ= Ġafter Fold ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmax X Ġ= Ġfol ded Coords . max Of Ġ{ Ġit . first Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmax Y Ġ= Ġfol ded Coords . max Of Ġ{ Ġit . second Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" P uzzle Ġ 2 : Ġ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 .. max Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 .. max X ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( Ġif Ġ(( x Ġto Ġy ) Ġin Ġfol ded Coords ) Ġ"#" Ġelse Ġ" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }