/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 9 ĠN ich olas ĠBen net t Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġday 4 Ċ Ċ object ĠKotlin Main Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠMIN _ VALUE Ġ= Ġ 1 9 3 6 5 1 ĊĠĠĠ Ġprivate Ġconst Ġval ĠMAX _ VALUE Ġ= Ġ 6 4 9 7 2 9 ĊĠĠĠ Ġprivate Ġconst Ġval ĠHEADER Ġ= ĊĠĠĠĠĠĠĠ Ġ" Potential Ġcode Ġvalues Ġbetween Ġ% d Ġand Ġ% d , Ġwith Ġnon - desc ending Ġdigits , Ġand Ġwith Ġ... % n " ĊĠĠĠ Ġprivate Ġconst Ġval ĠFORMAT _ 1 Ġ= ĊĠĠĠĠĠĠĠ Ġ"( Part Ġ 1 ) Ġ... Ġat Ġleast Ġ 1 Ġrun Ġof Ġat Ġleast Ġ 2 Ġrepe ating Ġdigits Ġ= Ġ% d .% n " ĊĠĠĠ Ġprivate Ġconst Ġval ĠFORMAT _ 2 Ġ= ĊĠĠĠĠĠĠĠ Ġ"( Part Ġ 2 ) Ġ... Ġat Ġleast Ġ 1 Ġrun Ġof Ġexactly Ġ 2 Ġrepe ating Ġdigits Ġ= Ġ% d .% n " ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmain ( var arg Ġargs : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprint ( HEADER . format ( MIN _ VALUE , ĠMAX _ VALUE )) ĊĠĠĠĠĠĠĠ Ġwith ( generate ( 0 , ĠMIN _ VALUE , ĠMAX _ VALUE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( FORMAT _ 1 . format ( filter And Count ( this ) Ġ{ Ġentry Ġ-> Ġentry . value . size Ġ>= Ġ 2 Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( FORMAT _ 2 . format ( filter And Count ( this ) Ġ{ Ġentry Ġ-> Ġentry . value . size Ġ== Ġ 2 Ġ})) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter And Count ( ĊĠĠĠĠĠĠĠ Ġraw Candidates : ĠList < Int >, ĊĠĠĠĠĠĠĠ Ġpredicate : Ġ( Map . Entry < Char , ĠList < Char >>) Ġ-> ĠBoolean ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġraw Candidates ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . toString (). as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġd Ġ-> Ġd Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( predicate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. any () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. count () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate ( ĊĠĠĠĠĠĠĠ Ġseed : ĠInt , ĊĠĠĠĠĠĠĠ Ġminimum : ĠInt , ĊĠĠĠĠĠĠĠ Ġmaximum : ĠInt ĊĠĠĠ Ġ): ĠList < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcandidates : ĠMutable List < Int > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġlast Digit Ġ= Ġif Ġ( seed Ġ> Ġ 0 ) Ġseed Ġ% Ġ 1 0 Ġelse Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġnew Seed Ġ= Ġseed Ġ* Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( new Seed Ġ<= Ġmaximum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġnew Seed Ġ+ Ġlast Digit Ġuntil Ġnew Seed Ġ+ Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ<= Ġmaximum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ>= Ġminimum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcandidates . add ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcandidates . addAll ( generate ( i , Ġminimum , Ġmaximum )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcandidates ĊĠĠĠ Ġ} Ċ Ċ }