package Ġad vent of code Ċ Ċ import Ġjava . io . File Ċ import Ġjava . math . BigInteger Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġprintln ( first 1 2 (" ## .# .. # .# .. #. #### . ######## # .# ... # .# .# ...... ## .# .# ... ## ..... # ... # ... #. ## .# ... ## ... #. #### . ## .. # .# .. # .", ĠFile ("./ data / day 1 2 _ 1 . txt "). read Lines (), Ġ 2 0 )) ĊĠĠĠ Ġprintln ( second 1 2 ()) Ċ } Ċ Ċ fun Ġsecond 1 2 (): ĠBigInteger Ġ{ ĊĠĠĠ Ġ// Note : ĠSolution Ġwas Ġfound Ġin Ġan Ġan alyt ical Ġway ĊĠĠĠ Ġval Ġtarget Ġ= ĠBigInteger (" 5 0 0 0 0 0 0 0 0 0 0 ") ĊĠĠĠ Ġreturn Ġ( target Ġ- ĠBigInteger (" 5 0 0 ")) Ġ* ĠBigInteger (" 8 7 ") Ġ+ ĠBigInteger (" 4 4 4 5 7 ") Ċ } Ċ Ċ fun Ġfirst 1 2 ( initial : ĠString , Ġdata : ĠList < String >, Ġgener ations Count : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġmore Ġ= Ġ( gener ations Count Ġ* Ġ 1 . 5 ). toInt () ĊĊĠĠĠ Ġval Ġarr Ġ= ĠChar Array ( more Ġ* Ġ 2 Ġ+ Ġinitial . length ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġ< Ġmore Ġ|| Ġit Ġ>= Ġ( more Ġ+ Ġinitial . length )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ'.' ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial [ it Ġ- Ġmore ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrules Ġ= Ġdata . map Ġ{ ĠRule ( it ) Ġ} ĊĊĠĠĠ Ġrepeat ( gener ations Count ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġarr . copyOf () ĊĠĠĠĠĠĠĠ Ġ( 2 Ġuntil Ġ( arr . size Ġ- Ġ 2 )). forEach Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarr [ i ] Ġ= Ġrules . fold ('.') Ġ{ Ġacc , Ġrule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rule . match ( old , Ġi )) Ġrule . result Ġelse Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġsum Ġ= Ġ 0 ĊĠĠĠ Ġarr . forEach Indexed Ġ{ Ġi , Ġch Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( ch Ġ== Ġ'# ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġ( i Ġ- Ġmore ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġsum Ċ } Ċ Ċ private Ġclass ĠRule ( str : ĠString ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġarr : ĠChar Array Ġ= Ġchar ArrayOf ( str [ 0 ], Ġstr [ 1 ], Ġstr [ 2 ], Ġstr [ 3 ], Ġstr [ 4 ]) ĊĠĠĠ Ġval Ġresult : ĠChar Ġ= Ġstr [ 9 ] ĊĊĠĠĠ Ġfun Ġmatch ( src : ĠChar Array , Ġi : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsrc [ i Ġ- Ġ 2 ] Ġ== Ġarr [ 0 ] Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ i Ġ- Ġ 1 ] Ġ== Ġarr [ 1 ] Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ i ] Ġ== Ġarr [ 2 ] Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ i Ġ+ Ġ 1 ] Ġ== Ġarr [ 3 ] Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc [ i Ġ+ Ġ 2 ] Ġ== Ġarr [ 4 ] ĊĠĠĠ Ġ} Ċ }