package Ġio . pg . ad vent . day 6 Ċ Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ internal Ġclass ĠDay 6 Test Ġ{ ĊĊĠ Ġprivate Ġval Ġinput Ġ= ĠlistOf ( ĊĠĠĠ Ġ" 1 , Ġ 1 ", ĊĠĠĠ Ġ" 1 , Ġ 6 ", ĊĠĠĠ Ġ" 8 , Ġ 3 ", ĊĠĠĠ Ġ" 3 , Ġ 4 ", ĊĠĠĠ Ġ" 5 , Ġ 5 ", ĊĠĠĠ Ġ" 8 , Ġ 9 " ĊĠ Ġ) ĊĊĠ Ġprivate Ġval Ġcoords Ġ= ĠlistOf ( ĊĠĠĠ ĠCoordinate ( 1 , Ġ 1 , Ġ 1 ), ĊĠĠĠ ĠCoordinate ( 2 , Ġ 1 , Ġ 6 ), ĊĠĠĠ ĠCoordinate ( 3 , Ġ 8 , Ġ 3 ), ĊĠĠĠ ĠCoordinate ( 4 , Ġ 3 , Ġ 4 ), ĊĠĠĠ ĠCoordinate ( 5 , Ġ 5 , Ġ 5 ), ĊĠĠĠ ĠCoordinate ( 6 , Ġ 8 , Ġ 9 ) ĊĠ Ġ) ĊĊĠ Ġprivate Ġval Ġmax X Ġ= Ġ 8 ĊĠ Ġprivate Ġval Ġmax Y Ġ= Ġ 9 ĊĠ Ġprivate Ġval Ġmax Distance Ġ= Ġ 3 2 ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġparse Ġinput `() Ġ{ ĊĠĠĠ Ġval Ġcoords To Test Ġ= Ġparse Input ( input ) ĊĊĠĠĠ ĠassertEquals ( coords , Ġcoords To Test ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġget Ġa ĠPair Ġon Ġmin X Ġand Ġmax Y `() Ġ{ ĊĠĠĠ Ġval Ġlength Of X And Y Ġ= Ġmax X And Max Y ( coords ) ĊĊĠĠĠ ĠassertEquals ( Pair ( 8 , Ġ 9 ), Ġlength Of X And Y ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġget Ġthe Ġnearest Ġpoint Ġid Ġof Ġx Ġand Ġy `() Ġ{ ĊĠĠĠ Ġval Ġx 1 Ġ= Ġ 0 ĊĠĠĠ Ġval Ġy 1 Ġ= Ġ 0 ĊĠĠĠ Ġval Ġx 2 Ġ= Ġ 1 ĊĠĠĠ Ġval Ġy 2 Ġ= Ġ 4 ĊĊĠĠĠ Ġval Ġid 1 Ġ= Ġnearest Coord Of ( x 1 , Ġy 1 , Ġcoords ) ĊĠĠĠ Ġval Ġid 2 Ġ= Ġnearest Coord Of ( x 2 , Ġy 2 , Ġcoords ) ĊĊĠĠĠ ĠassertEquals ( 1 , Ġid 1 ) ĊĠĠĠ ĠassertEquals (- 1 , Ġid 2 ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġhave Ġa Ġrepresentation Ġof Ġthe Ġarea `() Ġ{ ĊĠĠĠ Ġval Ġarea Ġ= Ġmap Area Of Coords ( max X , Ġmax Y , Ġcoords ) ĊĠĠĠ Ġval Ġexpected Ġ= ĠlistOf ( Coordinate (- 1 , Ġ 0 , Ġ 0 , Ġ 1 , Ġtrue , Ġ 5 4 )) ĊĊĠĠĠ ĠassertEquals ( expected . first (), Ġarea . first ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġsay Ġfor Ġa Ġgiven Ġpoint Ġif Ġone Ġhis Ġcoord Ġis Ġat Ġedge `() Ġ{ ĊĠĠĠ Ġval Ġis At Edge 1 Ġ= ĠPair ( 3 , Ġ 0 ). is At Edge ( max X , Ġmax Y ) ĊĠĠĠ Ġval Ġis At Edge 2 Ġ= ĠPair ( 3 , Ġ 1 ). is At Edge ( max X , Ġmax Y ) ĊĊĠĠĠ ĠassertEquals ( true , Ġis At Edge 1 ) ĊĠĠĠ ĠassertEquals ( false , Ġis At Edge 2 ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġgive Ġthe Ġsize Ġof Ġthe Ġmax Ġarea Ġwhich Ġis Ġfinite `() Ġ{ ĊĠĠĠ Ġval Ġcoords Ġ= Ġmap Area Of Coords ( max X , Ġmax Y , Ġthis . coords ) ĊĠĠĠ Ġval Ġmax Finite Area Ġ= Ġmax Of Finite Area ( coords ) ĊĊĠĠĠ ĠassertEquals ( 1 7 , Ġmax Finite Area ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġgive Ġthe Ġsize Ġof Ġthe Ġmax Ġarea Ġwhich Ġis Ġfinite Ġfrom Ġthe Ġinput `() Ġ{ ĊĠĠĠ Ġval Ġmax Finite Area Ġ= Ġday 6 Part 1 ( input ) ĊĊĠĠĠ ĠassertEquals ( 1 7 , Ġmax Finite Area ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġresolve Ġpart Ġ 2 Ġof Ġday Ġ 6 Ġfrom Ġthe Ġinput `() Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġday 6 Part 2 ( input ) ĊĊĠĠĠ ĠassertEquals ( 1 6 , Ġsize ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġget Ġthe Ġdistance Ġfrom Ġall Ġpoints Ġfor Ġa Ġgive Ġcoord `() Ġ{ ĊĠĠĠ Ġval Ġdistance Ġ= ĠPair ( 4 , Ġ 3 ). getTotal Distance ( coords ) ĊĊĠĠĠ ĠassertEquals ( 3 0 , Ġdistance ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` Should Ġget Ġthe Ġlist Ġof Ġcoord Ġwhich Ġare Ġin Ġthe Ġregion `() Ġ{ ĊĠĠĠ Ġval Ġarea Ġ= Ġmap Area Of Coords ( max X , Ġmax Y , Ġcoords ) ĊĠĠĠ Ġval Ġregion Ġ= Ġarea . get Region ( max Distance ) ĊĊĠĠĠ ĠassertEquals ( 1 6 , Ġregion . size ) ĊĠ Ġ} Ċ } Ċ