package Ġcom . jame sl aver ack . w ul ind ice Ċ Ċ /* Ċ Ġ* ĠFor Ġa Ġgiven Ġcollection Ġof Ġdice , Ġdetermine Ġthe Ġbest Ġresult Ġpossible . Ċ Ġ* Ġ< p > Ċ Ġ* ĠFor Ġexample : Ġ[ 1 , Ġ 2 , Ġ 3 , Ġ 3 , Ġ 1 ] Ġhas Ġa Ġbest Ġset Ġof Ġthe Ġpair Ġof Ġth re es . ĠResult ing Ġin Ġ 2 3 . Ċ Ġ*/ Ċ fun Ġbest _ set ( dice : ĠCollection < Int >): ĠInt Ġ{ ĊĠĠĠ Ġval Ġbuckets Ġ= Ġbucket _ dice ( dice ) ĊĠĠĠ Ġvar Ġbest Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ(( die , Ġamount ) Ġin Ġbuckets ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset Amount Ġ= Ġvalue ise ( die , Ġamount ); ĊĠĠĠĠĠĠĠ Ġbest Ġ= ĠMath . max ( best , Ġset Amount ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbest ; Ċ } Ċ Ċ fun Ġvalue ise ( die : ĠInt , Ġamount : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġamount Ġ* Ġ 1 0 Ġ+ Ġdie ; Ċ } Ċ Ċ fun Ġbucket _ dice ( dice : ĠCollection < Int >) Ġ: ĠMap < Int , ĠInt > Ġ{ ĊĠĠĠ Ġvar Ġbuckets Ġ= Ġmutable Map Of < Int , ĠInt >() ĊĊĠĠĠ Ġdice . forEach ({ ĊĠĠĠĠĠĠĠ Ġif Ġ( buckets [ it ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuckets [ it ] Ġ= Ġbuckets [ it ] !!. plus ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuckets [ it ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ Ġreturn Ġbuckets Ċ } Ċ