package Ġday 2 Ċ Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Test Ċ Ċ class ĠCheck sum Part Two Ġ{ ĊĊĠ Ġfun Ġeven ly Div isible Checksum ( of : ĠArray < Array < Int >> ): ĠInt Ġ= ĊĠĠĠĠĠ Ġof . fold ( 0 ) Ġ{ Ġacc , Ġa Ġ-> ĊĠĠĠĠĠĠĠ Ġacc Ġ+ Ġeven ly Div isible Division ( a . sorted ()) ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġfun Ġeven ly Div isible Division ( array : ĠList < Int >): ĠInt Ġ{ ĊĠĠĠ Ġfor Ġ( a Ġin Ġarray ) Ġ{ ĊĠĠĠĠĠ Ġfor Ġ( b Ġin Ġarray . minus ( a )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( a Ġ% Ġb Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġa Ġ/ Ġb ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ 0 ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` checksum Ġof Ġthe Ġeven ly Ġdiv isible Ġvalues `() Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ ĠarrayOf ( 5 , Ġ 9 , Ġ 2 , Ġ 8 ), ĊĠĠĠĠĠĠĠ ĠarrayOf ( 9 , Ġ 4 , Ġ 7 , Ġ 3 ), ĊĠĠĠĠĠĠĠ ĠarrayOf ( 3 , Ġ 8 , Ġ 6 , Ġ 5 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠassertEquals ( 9 , Ġeven ly Div isible Checksum ( input )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` the Ġchecksum Ġof Ġthe Ġpart Ġtwo Ġis `() Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= Ġ" 1 5 7 \ t 5 6 4 \ t 1 2 0 \ t 4 9 5 \ t 1 9 4 \ t 5 2 0 \ t 5 1 0 \ t 6 1 8 \ t 2 4 4 \ t 4 4 3 \ t 4 7 1 \ t 4 7 3 \ t 6 1 2 \ t 1 4 9 \ t 5 0 6 \ t 1 3 8 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 1 4 6 9 \ t 6 7 0 \ t 4 7 \ t 6 0 4 \ t 1 5 0 0 \ t 2 3 8 \ t 1 3 0 4 \ t 1 4 2 6 \ t 5 4 \ t 7 4 9 \ t 1 2 1 8 \ t 1 4 0 9 \ t 6 0 \ t 5 1 \ t 1 4 3 6 \ t 5 9 8 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 5 7 8 \ t 1 8 4 \ t 2 7 6 0 \ t 3 0 5 7 \ t 9 9 4 \ t 1 6 7 \ t 2 1 4 9 \ t 1 9 1 \ t 2 9 1 3 \ t 2 4 0 4 \ t 2 1 3 \ t 1 0 2 5 \ t 1 8 1 5 \ t 5 8 8 \ t 2 4 2 1 \ t 3 1 3 8 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 9 3 5 \ t 8 5 0 \ t 7 2 6 \ t 1 5 5 \ t 1 7 8 \ t 1 7 0 \ t 2 7 5 \ t 7 9 1 \ t 1 0 2 8 \ t 7 5 \ t 7 8 1 \ t 1 3 8 \ t 1 7 6 \ t 6 2 1 \ t 7 7 3 \ t 6 8 8 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 2 1 2 \ t 9 7 7 \ t 2 9 7 \ t 6 4 5 \ t 2 2 9 \ t 1 9 4 \ t 2 0 7 \ t 6 4 0 \ t 8 0 4 \ t 5 0 9 \ t 8 3 3 \ t 7 2 6 \ t 1 9 7 \ t 8 2 5 \ t 2 4 2 \ t 7 4 3 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 1 3 1 \ t 4 3 \ t 3 2 4 \ t 3 1 9 \ t 6 4 \ t 3 7 6 \ t 2 3 1 \ t 1 4 6 \ t 3 8 2 \ t 1 6 2 \ t 4 6 4 \ t 3 1 4 \ t 1 7 8 \ t 3 5 3 \ t 1 2 3 \ t 4 4 6 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 5 5 1 \ t 1 2 1 \ t 1 2 7 \ t 1 5 5 \ t 1 1 9 7 \ t 2 8 8 \ t 1 4 1 2 \ t 1 2 8 5 \ t 5 5 7 \ t 1 3 7 \ t 1 4 5 \ t 1 6 5 1 \ t 1 5 4 9 \ t 1 2 1 7 \ t 6 8 1 \ t 1 6 4 9 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 1 7 2 3 \ t 1 7 8 9 \ t 5 5 2 5 \ t 4 8 9 0 \ t 3 3 6 8 \ t 1 8 8 \ t 3 3 6 9 \ t 4 8 4 2 \ t 3 2 5 9 \ t 2 5 0 2 \ t 4 8 2 5 \ t 1 6 3 \ t 1 4 6 \ t 2 9 4 1 \ t 1 2 6 \ t 5 5 9 4 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 3 1 1 \ t 2 4 2 0 \ t 1 8 5 \ t 2 1 1 \ t 2 6 5 9 \ t 2 5 6 8 \ t 2 4 6 1 \ t 2 3 1 \ t 2 5 9 9 \ t 1 3 6 9 \ t 8 2 1 \ t 5 0 6 \ t 2 2 2 7 \ t 1 8 0 \ t 2 2 0 \ t 1 3 7 2 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 1 9 7 \ t 4 4 9 0 \ t 1 4 1 \ t 2 4 9 \ t 3 6 1 5 \ t 3 3 1 4 \ t 7 8 9 \ t 4 4 0 7 \ t 1 6 9 \ t 3 5 2 \ t 4 3 8 3 \ t 5 0 7 0 \ t 5 1 7 3 \ t 3 1 1 5 \ t 1 3 2 \ t 3 5 1 3 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 4 2 2 8 \ t 2 8 7 5 \ t 3 7 1 7 \ t 5 0 4 \ t 1 1 4 \ t 2 6 7 9 \ t 1 6 5 \ t 3 5 6 8 \ t 3 0 0 2 \ t 1 1 6 \ t 7 5 6 \ t 1 5 1 \ t 4 0 2 7 \ t 2 6 1 \ t 4 8 1 3 \ t 2 7 6 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 6 5 1 \ t 3 1 9 4 \ t 2 9 7 5 \ t 2 5 9 1 \ t 1 0 1 9 \ t 8 3 5 \ t 3 0 0 7 \ t 2 4 8 \ t 3 0 2 8 \ t 1 3 8 2 \ t 2 8 2 \ t 3 2 4 2 \ t 2 9 6 \ t 2 7 0 \ t 3 2 2 4 \ t 3 3 0 4 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 1 8 5 8 \ t 1 6 5 0 \ t 1 7 2 0 \ t 1 8 4 8 \ t 9 5 \ t 3 1 3 \ t 5 0 0 \ t 1 7 7 6 \ t 2 0 7 \ t 1 1 8 6 \ t 7 2 \ t 2 5 9 \ t 2 8 1 \ t 1 6 2 0 \ t 7 9 \ t 7 7 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 3 8 4 1 \ t 3 2 1 7 \ t 4 4 0 \ t 3 4 8 1 \ t 3 6 4 3 \ t 9 4 0 \ t 3 7 9 4 \ t 4 5 3 6 \ t 1 9 9 4 \ t 4 0 4 0 \ t 3 5 2 7 \ t 2 0 2 \ t 1 9 3 \ t 1 9 6 1 \ t 2 3 0 \ t 2 1 7 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 2 8 3 7 \ t 2 7 4 7 \ t 2 8 5 6 \ t 4 2 6 \ t 7 2 \ t 7 8 \ t 2 3 6 1 \ t 9 6 \ t 2 7 8 4 \ t 2 7 8 0 \ t 9 8 \ t 2 0 4 1 \ t 2 4 4 4 \ t 1 2 6 7 \ t 2 1 6 7 \ t 2 4 8 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" 4 1 1 \ t 1 7 8 \ t 4 2 6 3 \ t 4 6 9 0 \ t 3 6 5 3 \ t 1 6 2 \ t 3 2 0 1 \ t 4 7 0 2 \ t 3 1 2 9 \ t 2 6 8 5 \ t 3 7 1 6 \ t 1 4 7 \ t 3 7 9 0 \ t 4 8 8 8 \ t 7 9 \ t 1 6 5 " ĊĊĠĠĠ ĠassertEquals ( 2 8 0 , Ġeven ly Div isible Checksum ( day 2 Parser ( input ))) ĊĠ Ġ} Ċ }