package Ġa oc . solutions . y 2 0 1 5 Ċ Ċ import Ġa oc . core . Ad vent Day Ċ Ċ class ĠY 2 0 1 5 D 1 6 Ġ: ĠAd vent Day ( 2 0 1 5 , Ġ 1 6 , Ġ" A unt ĠS ue ") Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġproperty Regex Ġ= ĠRegex (""" ([ a - z ]+ ): Ġ(\ d +) """) ĊĠĠĠ Ġprivate Ġval Ġs ue Id Regex Ġ= ĠRegex (""" ^ S ue Ġ(\ d + ): .* $ """) ĊĊĠĠĠ Ġ/** ĠParses Ġa Ġsingle Ġline Ġof Ġinput Ġand Ġreturns Ġwhat Ġinformation Ġyou Ġknow Ġabout Ġany Ġ[ A unt S ue ]. Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġparse Input ( input : ĠString ) Ġ= ĠA unt S ue ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġs ue Id Regex . match Ent ire ( input ) !!. groups [ 1 ] !!. value . toInt (), ĊĠĠĠĠĠĠĠ Ġproperties Ġ= Ġproperty Regex . findAll ( input ). associate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( name , Ġvalue ) Ġ= Ġit . de structured ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġto Ġvalue . toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĠAll Ġyou Ġknow Ġabout Ġone Ġof Ġyour Ġmany Ġa unt s . Ġ*/ ĊĠĠĠ Ġprivate Ġdata Ġclass ĠA unt S ue ( val Ġid : ĠInt , Ġval Ġproperties : ĠMap < String , ĠInt >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTests Ġthese Ġproperties Ġagainst Ġthe Ġ[ mf cs am Rules ] Ġand Ġreturns Ġwhether Ġthey Ġmeet Ġall Ġcriteria . ĊĠĠĠĠ Ġ* ĠIf Ġthere Ġis Ġa Ġrule Ġfor Ġa Ġkey Ġthat Ġis Ġnot Ġpresent Ġin Ġthis Ġmap , Ġit Ġis Ġignored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠMap < String , ĠInt >. consistent With ( mf cs am Rules : ĠMap < String , Ġ( Int ) Ġ-> ĠBoolean >): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġmf cs am Rules . all Ġ{ Ġ( key , Ġpredicate ) Ġ-> Ġthis [ key ]?. let Ġ{ Ġvalue Ġ-> Ġpredicate ( value ) Ġ} Ġ?: Ġtrue Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpart One ( input : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġinput ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. line Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( this :: parse Input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġa unt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa unt . properties . consistent With ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" children " Ġto Ġ{ Ġit Ġ== Ġ 3 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cats " Ġto Ġ{ Ġit Ġ== Ġ 7 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sam oy eds " Ġto Ġ{ Ġit Ġ== Ġ 2 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pom er ani ans " Ġto Ġ{ Ġit Ġ== Ġ 3 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ak itas " Ġto Ġ{ Ġit Ġ== Ġ 0 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" viz sl as " Ġto Ġ{ Ġit Ġ== Ġ 0 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" gold fish " Ġto Ġ{ Ġit Ġ== Ġ 5 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" trees " Ġto Ġ{ Ġit Ġ== Ġ 3 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cars " Ġto Ġ{ Ġit Ġ== Ġ 2 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" perf umes " Ġto Ġ{ Ġit Ġ== Ġ 1 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. id ĊĊĠĠĠ Ġoverride Ġfun Ġpart Two ( input : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġinput ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. line Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( this :: parse Input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġa unt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa unt . properties . consistent With ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" children " Ġto Ġ{ Ġit Ġ== Ġ 3 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cats " Ġto Ġ{ Ġit Ġ> Ġ 7 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sam oy eds " Ġto Ġ{ Ġit Ġ== Ġ 2 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pom er ani ans " Ġto Ġ{ Ġit Ġ< Ġ 3 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ak itas " Ġto Ġ{ Ġit Ġ== Ġ 0 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" viz sl as " Ġto Ġ{ Ġit Ġ== Ġ 0 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" gold fish " Ġto Ġ{ Ġit Ġ< Ġ 5 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" trees " Ġto Ġ{ Ġit Ġ> Ġ 3 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cars " Ġto Ġ{ Ġit Ġ== Ġ 2 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" perf umes " Ġto Ġ{ Ġit Ġ== Ġ 1 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. id Ċ } Ċ