package Ġnet . o leg g . a oc . year 2 0 1 6 . day 9 Ċ Ċ import Ġnet . o leg g . a oc . so med ay . Some Day Ċ import Ġnet . o leg g . a oc . year 2 0 1 6 . Day Of 2 0 1 6 Ċ Ċ /** Ċ Ġ* ĠSee Ġ[ Year Ġ 2 0 1 6 , ĠDay Ġ 9 ]( https :// ad vent of code . com / 2 0 1 6 / day / 9 ) Ċ Ġ*/ Ċ object ĠDay 9 Ġ: ĠDay Of 2 0 1 6 ( 9 ) Ġ{ ĊĠ Ġprivate Ġval ĠP ATTERN Ġ= Ġ"\\ (( \\ d +) x (\\ d +) \\ ) ". to Regex () ĊĊĠ Ġoverride Ġfun Ġfirst ( data : ĠString ): ĠAny ? Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= Ġdata . replace ("\\ s ". to Regex (), Ġ"") ĊĠĠĠ Ġreturn Ġmeasure ( input , Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġsecond ( data : ĠString ): ĠAny ? Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= Ġdata . replace ("\\ s ". to Regex (), Ġ"") ĊĠĠĠ Ġreturn Ġmeasure ( input , Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġmeasure ( data : ĠString , Ġun fold : ĠBoolean ): ĠLong Ġ{ ĊĠĠĠ Ġreturn ĠP ATTERN . find ( data )?. let Ġ{ Ġmatch Ġ-> ĊĠĠĠĠĠ Ġval Ġ( length , Ġrepe ats ) Ġ= Ġmatch . group Values . drop ( 1 ). let Ġ{ Ġit . first (). toInt () Ġto Ġit . last (). to Long () Ġ} ĊĠĠĠĠĠ Ġval Ġ( match Start , Ġmatch End ) Ġ= Ġ( match . range . first Ġto Ġmatch . range . last ) ĊĠĠĠĠĠ Ġreturn @ let Ġif Ġ( un fold ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmatch Start Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġrepe ats Ġ* Ġmeasure ( data . substring ( match End Ġ+ Ġ 1 , Ġmatch End Ġ+ Ġ 1 Ġ+ Ġlength ), Ġtrue ) Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġmeasure ( data . substring ( match End Ġ+ Ġ 1 Ġ+ Ġlength ), Ġtrue ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġmatch Start Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġrepe ats Ġ* Ġlength Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġmeasure ( data . substring ( match End Ġ+ Ġ 1 Ġ+ Ġlength ), Ġfalse ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ?: Ġdata . length . to Long () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ= ĠSome Day . main ify ( Day 9 ) Ċ