package Ġa oc . day . two Ċ Ċ import Ġjava . io . File Ċ Ċ // ĠDest ruct ĠDeclaration Ċ data Ġclass ĠAddress ( val Ġa : Int , Ġval Ġb : Int , Ġval Ġc : ĠInt ) Ġ// Ġaddr Ġ 0 , Ġ 1 , Ġ 2 Ċ Ċ tail rec Ġfun Ġcompute ( memory : ĠArray < Int >, Ġpointer : ĠInt Ġ= Ġ 0 ): ĠArray < Int > Ġ{ ĊĠĠĠ Ġval Ġ( a , Ġb , Ġc ) Ġ= ĠAddress ( memory [ pointer + 1 ], Ġmemory [ pointer + 2 ], Ġmemory [ pointer + 3 ]) ĊĠĠĠ Ġ// Ġpointer Ġ= Ġinstruction Ġpointer ĊĠĠĠ Ġwhen Ġ( memory [ pointer ]) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġopcode Ġ-> Ġinstruction ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġmemory [ c ] Ġ= Ġmemory [ a ] Ġ+ Ġmemory [ b ] Ġ// Ġcalculate Ġinstruction 's Ġparameters ĊĠĠĠĠĠĠĠĠ 2 Ġ-> Ġmemory [ c ] Ġ= Ġmemory [ a ] Ġ* Ġmemory [ b ] Ġ// Ġ^ - Ġ.. Ġand Ġset Ġthe Ġinstruction ĊĠĠĠĠĠĠĠĠ 9 9 Ġ-> Ġreturn Ġmemory Ġ// ĠH alt ĠSignal ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException ( Ġ" Memory ĠError : Ġ${ memory . toList () }" Ġ) Ġ// ĠShould n 't Ġhappen , Ġhalt Ġwith Ġerror ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠAdv ance Ġthe Ġprogram ĊĠĠĠ Ġreturn Ġcompute ( memory , Ġpointer Ġ+ Ġ 4 ) Ċ } Ċ fun Ġexecute Program ( memory : ĠArray < Int >, Ġno un : ĠInt , Ġverb : ĠInt ): ĠArray < Int > Ġ{ ĊĠĠĠ Ġmemory [ 1 ] Ġ= Ġno un ĊĠĠĠ Ġmemory [ 2 ] Ġ= Ġverb ĊĠĠĠ Ġreturn Ġcompute ( memory ) Ċ } ĠĊ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġ// Ġprintln ( compute ( array Of ( 1 , Ġ 9 , Ġ 1 0 , Ġ 3 , Ġ 2 , Ġ 3 , Ġ 1 1 , Ġ 0 , Ġ 9 9 , Ġ 3 0 , Ġ 4 0 , Ġ 5 0 )). toList (). get ( 0 )) Ġ// Ġ[ 0 ]= 3 5 0 0 , Ġresult =[ 3 5 0 0 , Ġ 9 , Ġ 1 0 , Ġ 7 0 , Ġ 2 , Ġ 3 , Ġ 1 1 , Ġ 0 , Ġ 9 9 , Ġ 3 0 , Ġ 4 0 , Ġ 5 0 ] ĊĠĠĠ Ġval Ġline List Ġ= ĠFile ("../ input _ 2 0 1 9 - 2 . txt "). read Text (). split ("," ). map Ġ{ Ġit . toInt () Ġ} ĊĠĠĠ Ġprintln ( execute Program ( line List . to Typed Array (), Ġ 1 2 , Ġ 2 )[ 0 ]) Ġ// Ġ 3 7 1 6 2 5 0 ĊĊĠĠĠ Ġfor Ġ( no un Ġin Ġ 0 .. 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġfor Ġ( verb Ġin Ġ 0 .. 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( execute Program ( line List . to Typed Array (), Ġno un , Ġverb )[ 0 ] Ġ== Ġ 1 9 6 9 0 7 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( 1 0 0 Ġ* Ġno un Ġ+ Ġverb ) Ġ// Ġ 6 4 7 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ