package Ġcom . github . free k db . a oc 2 0 1 9 Ċ Ċ import Ġjava . io . File Ċ Ċ private Ġconst Ġval ĠOP CODE _ PLUS Ġ= Ġ 1 Ċ private Ġconst Ġval ĠOP CODE _ TIMES Ġ= Ġ 2 Ċ private Ġconst Ġval ĠOP CODE _ HAL T Ġ= Ġ 9 9 Ċ Ċ // Ġhttps :// ad vent of code . com / 2 0 1 9 / day / 2 Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval ĠinitialState Ġ= ĠFile (" input / day - 0 2 -- input . txt ") ĊĠĠĠĠĠĠĠ Ġ. read Lines () ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . split (",") Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . toInt () Ġ} ĊĊĠĠĠ Ġfor Ġ( no un Ġin Ġ 0 .. 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( verb Ġin Ġ 0 .. 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠlistOf ( initialState [ 0 ], Ġno un , Ġverb ) Ġ+ ĠinitialState . drop ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal State Ġ= Ġrun Program ( state ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( final State [ 0 ] Ġ== Ġ 1 9 6 9 0 7 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Answer Ġ$ no un $ verb Ġgives Ġfinal State [ 0 ]: Ġ${ final State [ 0 ]} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġrun Program ( initialState : ĠList < Int >): ĠList < Int > Ġ{ ĊĠĠĠ Ġval Ġmemory Ġ= ĠinitialState . to Mutable List () ĊĠĠĠ Ġvar Ġinstruction Pointer Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġopcode Ġ= Ġmemory [ instruction Pointer ] ĊĊĠĠĠ Ġwhile Ġ( opcode Ġ!= ĠOP CODE _ HAL T ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( opcode Ġ== ĠOP CODE _ PLUS Ġ|| Ġopcode Ġ== ĠOP CODE _ TIMES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperand 1 Ġ= Ġmemory [ memory [ instruction Pointer Ġ+ Ġ 1 ]] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperand 2 Ġ= Ġmemory [ memory [ instruction Pointer Ġ+ Ġ 2 ]] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġif Ġ( opcode Ġ== ĠOP CODE _ PLUS ) Ġoperand 1 Ġ+ Ġoperand 2 Ġelse Ġoperand 1 Ġ* Ġoperand 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmemory [ memory [ instruction Pointer Ġ+ Ġ 3 ]] Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinstruction Pointer Ġ+= Ġ 4 ĊĠĠĠĠĠĠĠ Ġopcode Ġ= Ġmemory [ instruction Pointer ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġmemory Ċ } Ċ