import Ġjava . io . File Ċ import Ġjava . math . BigInteger Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap Ċ import Ġkotlin . collections . component 1 Ċ import Ġkotlin . collections . component 2 Ċ Ċ var Ġmask Ġ= Ġ"" Ċ var Ġprogram Ġ= ĠHashMap < String , Long >() Ċ File (" input / 2 0 2 0 / day 1 4 "). forEach Line Ġ{ ĊĠĠĠ Ġvar Ġ( cmd , value ) Ġ= Ġit . split (" =") ĊĠĠĠ Ġwhen Ġ( cmd . trim ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" mask " Ġ-> Ġmask Ġ= Ġvalue . trim () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġwrite ( cmd . trim (), value . trim (), mask ) ĊĠĠĠ Ġ} Ċ } Ċ var Ġsum Ġ= Ġprogram . values . sum () Ċ println ( sum ) Ċ Ċ fun Ġwrite ( cmd : ĠString , Ġvalue : ĠString , Ġmask : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġaddress Ġ= Ġcmd . remove Sur rounding (" mem [ ", "] ") ĊĠĠĠ Ġval Ġinput Ġ= Ġvalue . to Bit String () ĊĠĠĠ Ġvar Ġmasked Ġ= Ġ"" ĊĠĠĠ Ġmask . forEach Indexed Ġ{ Ġindex , Ġit Ġ-> Ġmasked Ġ+= Ġif Ġ( it Ġ!= Ġ' X ') Ġit Ġelse Ġinput . get ( index ) Ġ} ĊĠĠĠ Ġprogram . put ( address , masked . bits To Long ()) Ċ } Ċ Ċ fun ĠString . bits To Long () Ġ= Ġreplace Range ( 0 , this . indexOf (' 1 '), "" ). to Long ( 2 ) Ċ fun ĠString . to Bit String () Ġ= Ġthis . to Long (). toString ( 2 ). pad Start ( 3 6 ,' 0 ')