package Ġday 0 7 Ċ Ċ import Ġcommon . Input Repo Ċ import Ġcommon . read Session Cookie Ċ import Ġcommon . solve Ċ import Ġkotlin . math . absolute Value Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġday Ġ= Ġ 7 ĊĠĠĠ Ġval Ġinput Ġ= ĠInput Repo ( args . read Session Cookie ()). get ( day Ġ= Ġday ) ĊĊĠĠĠ Ġsolve ( day , Ġinput , Ġ:: solve Day 0 7 Part 1 , Ġ:: solve Day 0 7 Part 2 ) Ċ } Ċ Ċ private Ġfun ĠList < String >. to Cr abs (): ĠList < Long > Ġ= Ġfirst () ĊĠĠĠ Ġ. split (",") ĊĠĠĠ Ġ. map ( String :: to Long ) Ċ Ċ fun Ġsolve Day 0 7 Part 1 ( input : ĠList < String >): ĠLong Ġ{ ĊĠĠĠ Ġval Ġcr ab Positions Ġ= Ġinput . to Cr abs () ĊĠĠĠ Ġreturn Ġ( cr ab Positions . min OrNull () !! .. cr ab Positions . max OrNull () !! ). min Of Ġ{ Ġpossible Position Ġ-> ĊĠĠĠĠĠĠĠ Ġcr ab Positions . sum Of Ġ{ Ġcr ab Position Ġ-> Ġcr ab Position Ġdistance To Ġpossible Position Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġin fix Ġfun ĠLong . distance To ( other : ĠLong ): ĠLong Ġ= Ġ( this Ġ- Ġother ). absolute Value Ċ Ċ fun Ġsolve Day 0 7 Part 2 ( input : ĠList < String >): ĠLong Ġ{ ĊĠĠĠ Ġval Ġcr ab Positions Ġ= Ġinput . to Cr abs () ĊĠĠĠ Ġreturn Ġ( cr ab Positions . min OrNull () !! .. cr ab Positions . max OrNull () !! ). min Of Ġ{ Ġpossible Position Ġ-> ĊĠĠĠĠĠĠĠ Ġcr ab Positions . sum Of Ġ{ Ġcr ab Position Ġ-> Ġcr ab Position Ġexponential Distance To Ġpossible Position Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġin fix Ġfun ĠLong . exponent ial Distance To ( ĊĠĠĠ Ġother : ĠLong , Ċ ): ĠLong Ġ= Ġ( 0 .. this . distance To ( other )). sum () Ċ