package Ġcom . m ant ono . a oc . day 0 2 Ċ Ċ import Ġcom . m ant ono . a oc . Ao C Ċ import Ġcom . m ant ono . a oc . Part Ċ Ċ @ Ao C ( 2 , ĠPart . A ) Ċ fun Ġa ( input : ĠString ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġrun Program ( input , Ġ 1 2 , Ġ 2 ) Ċ } Ċ Ċ @ Ao C ( 2 , ĠPart . B ) Ċ fun Ġb ( input : ĠString ): ĠInt Ġ{ ĊĠĠĠ Ġfor ( i Ġin Ġ 0 .. 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor ( n Ġin Ġ 0 .. 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠInt Ġ= Ġrun Program ( input , Ġi , Ġn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result Ġ== Ġ 1 9 6 9 0 7 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( 1 0 0 Ġ* Ġi ) Ġ+ Ġn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ- 1 Ċ } Ċ Ċ fun Ġrun Program ( input : ĠString , Ġprogram State 0 : ĠInt , Ġprogram State 1 : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġinput Data : ĠMutable List < Int > Ġ= Ġinput . split ("," ). map Ġ{ Ġit . trim (). toInt () Ġ}. to Mutable List () ĊĠĠĠ Ġinput Data [ 1 ] Ġ= Ġprogram State 0 ĊĠĠĠ Ġinput Data [ 2 ] Ġ= Ġprogram State 1 ĊĠĠĠ Ġreturn Ġparse Data ( input Data ) Ċ } Ċ Ċ tail rec Ġfun Ġparse Data ( input Data : ĠMutable List < Int >, Ġindex : ĠInt Ġ= Ġ 0 ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġop Code : ĠInt Ġ= Ġinput Data [ index ] ĊĠĠĠ Ġval Ġinput 0 : ĠInt Ġ= Ġinput Data [ index + 1 ] ĊĠĠĠ Ġval Ġinput 1 : ĠInt Ġ= Ġinput Data [ index + 2 ] ĊĠĠĠ Ġval Ġoutput : ĠInt Ġ= Ġinput Data [ index + 3 ] ĊĠĠĠ Ġwhen ( op Code ) Ġ{ ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġinput Data [ output ] Ġ= Ġinput Data [ input 0 ] Ġ+ Ġinput Data [ input 1 ] ĊĠĠĠĠĠĠĠĠ 2 Ġ-> Ġinput Data [ output ] Ġ= Ġinput Data [ input 0 ] Ġ* Ġinput Data [ input 1 ] ĊĠĠĠĠĠĠĠĠ 9 9 Ġ-> Ġreturn Ġinput Data [ 0 ] ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected Ġop Ġcode : Ġ$ op Code ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġparse Data ( input Data , Ġindex Ġ+ Ġ 4 ) Ċ } Ċ