package Ġorg . ad vent of code Ċ Ċ enum Ġclass ĠACTION Ġ{ ĠToggle , ĠOn , ĠOff Ġ} Ċ Ċ data Ġclass ĠInstruction ( ĊĠ Ġval Ġy 1 : ĠInt , Ġval Ġx 1 : ĠInt , ĊĠ Ġval Ġy 2 : ĠInt , Ġval Ġx 2 : ĠInt , ĊĠ Ġval Ġn : ĠInt Ġ= Ġ 1 0 , ĊĠ Ġval Ġaction : ĠACTION Ġ= ĠACTION . Off Ċ ) Ġ{ ĊĠ Ġfun Ġget Pos (): ĠList < Int > Ġ{ ĊĠĠĠ Ġreturn Ġ( y 1 .. y 2 ). flatMap { Ġy Ġ-> ĊĠĠĠĠĠ Ġ( x 1 .. x 2 ). map Ġ{ Ġx Ġ-> Ġy Ġ* Ġn Ġ+ Ġx Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ type alias ĠArr Action < T > Ġ= Ġ( Array < T >, ĠInt ) Ġ-> ĠUnit Ċ inline Ġfun Ġ< re ified ĠT > Ġnew Lights ( n : ĠInt , Ġv : ĠT ): ĠArray < T > Ġ{ ĊĠ Ġreturn ĠArray < T >( n Ġ* Ġn ) Ġ{ Ġv Ġ} Ċ } Ċ Ċ class ĠDay 0 6 ( name : ĠString ): ĠDay ( name ) Ġ{ ĊĠ Ġprivate Ġval Ġn Ġ= Ġ 1 0 0 0 ĊĊĠ Ġfun Ġget Instruction ( s : ĠString ): ĠInstruction Ġ{ ĊĠĠĠ Ġval Ġ( y 0 , Ġx 0 , Ġy 1 , Ġx 1 ) Ġ= Ġextract Numbers ( s ) ĊĠĠĠ Ġval Ġaction Ġ= Ġwhen Ġ( s [ 6 ]) Ġ{ ĊĠĠĠĠĠ Ġ' Ġ' Ġ-> ĠACTION . Toggle ĊĠĠĠĠĠ Ġ' n ' Ġ-> ĠACTION . On ĊĠĠĠĠĠ Ġelse Ġ-> ĠACTION . Off ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠInstruction ( y 0 , Ġx 0 , Ġy 1 , Ġx 1 , Ġn , Ġaction ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ< T > Ġapply Ops ( ĊĠĠĠ Ġarr : ĠArray < T >, ĊĠĠĠ Ġlist : ĠList < Instruction >, ĊĠĠĠ Ġops : ĠHashMap < ACTION , ĠArr Action < T >> ĊĠ Ġ): ĠArray < T > Ġ{ ĊĠĠĠ Ġlist . forEach Ġ{ Ġins Ġ-> ĊĠĠĠĠĠ Ġins . get Pos (). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġops [ ins . action ]?. invoke ( arr , Ġit ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġarr ĊĠ Ġ} ĊĊĠ Ġval Ġstatus Ops : ĠHashMap < ACTION , ĠArr Action < Boolean >> Ġ= Ġhash Map Of ( ĊĠĠĠ ĠACTION . Toggle Ġto Ġ{ Ġa , Ġi Ġ-> Ġa [ i ] Ġ= Ġ! a [ i ] Ġ}, ĊĠĠĠ ĠACTION . On Ġto Ġ{ Ġa , Ġi Ġ-> Ġa [ i ] Ġ= Ġtrue Ġ}, ĊĠĠĠ ĠACTION . Off Ġto Ġ{ Ġa , Ġi Ġ-> Ġa [ i ] Ġ= Ġfalse Ġ} ĊĠ Ġ) ĊĊĠ Ġfun Ġpart 1 ( instructions : ĠList < Instruction >): ĠInt Ġ{ ĊĠĠĠ Ġval Ġlights Ġ= Ġnew Lights ( n , Ġfalse ) ĊĠĠĠ Ġreturn Ġapply Ops ( lights , Ġinstructions , Ġstatus Ops ) ĊĠĠĠĠĠ Ġ. count Ġ{ Ġit Ġ} ĊĠ Ġ} ĊĊĠ Ġval Ġbright Ops : ĠHashMap < ACTION , ĠArr Action < Int >> Ġ= Ġhash Map Of ( ĊĠĠĠ ĠACTION . Toggle Ġto Ġ{ Ġa , Ġi Ġ-> Ġa [ i ] Ġ+= Ġ 2 Ġ}, ĊĠĠĠ ĠACTION . On Ġto Ġ{ Ġa , Ġi Ġ-> Ġa [ i ] Ġ+= Ġ 1 Ġ}, ĊĠĠĠ ĠACTION . Off Ġto Ġ{ Ġa , Ġi Ġ-> Ġif Ġ( a [ i ] Ġ> Ġ 0 ) Ġa [ i ] Ġ-= Ġ 1 Ġ} ĊĠ Ġ) ĊĊĠ Ġfun Ġpart 2 ( instructions : ĠList < Instruction >): ĠInt Ġ{ ĊĠĠĠ Ġval Ġlights Ġ= Ġnew Lights ( n , Ġ 0 ) ĊĠĠĠ Ġreturn Ġapply Ops ( lights , Ġinstructions , Ġbright Ops ) ĊĠĠĠĠĠ Ġ. sum () ĊĠ Ġ} Ċ Ċ }