@ file : Suppress (" UNUSED _ PARAMETER ", Ġ" Convert Call Chain Into Sequence ") Ċ Ċ package Ġlesson 5 . task 1 ĊĊ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÑģÐ¿Ð¸Ñģ ÐºÐ° ĠÐ¿Ð¾Ðº ÑĥÐ¿ Ð¾Ðº Ġ` shopping List ` ĠÐ¿ Ð¾Ñģ Ñĩ Ð¸ÑĤ Ð°ÑĤÑĮ ĠÐµÐ³Ð¾ ĠÐ¾Ð± Ñī ÑĥÑİ ĠÑģ ÑĤÐ¾ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮ Ċ Ġ* ĠÐ½Ð° ĠÐ¾Ñģ Ð½Ð¾Ð² Ðµ ĠÑĨ ÐµÐ½ ĠÐ¸Ð· Ġ` costs `. ĠÐĴ ĠÑģÐ» ÑĥÑĩ Ð° Ðµ ĠÐ½Ðµ Ð¸Ð· Ð² ÐµÑģÑĤ Ð½Ð¾Ð¹ ĠÑĨ ÐµÐ½ Ñĭ ĠÑģ Ñĩ Ð¸ÑĤ Ð°ÑĤÑĮ , ĠÑĩÑĤÐ¾ ĠÑĤ Ð¾Ð² Ð°ÑĢ Ċ Ġ* ĠÐ¸ Ð³ Ð½ Ð¾ÑĢ Ð¸ ÑĢÑĥ ÐµÑĤÑģÑı . Ċ Ġ*/ Ċ fun Ġshopping List Cost ( ĊĠĠĠ Ġshopping List : ĠList < String >, ĊĠĠĠ Ġcosts : ĠMap < String , ĠDouble > Ċ ): ĠDouble Ġ{ ĊĠĠĠ Ġvar Ġtotal Cost Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġfor Ġ( item Ġin Ġshopping List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Cost Ġ= Ġcosts [ item ] ĊĠĠĠĠĠĠĠ Ġif Ġ( item Cost Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Cost Ġ+= Ġitem Cost ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġtotal Cost Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ½ Ð°Ð± Ð¾ÑĢ Ð° Ġ" Ð¸Ð¼ Ñı " -" Ð½Ð¾Ð¼ ÐµÑĢ ĠÑĤ ÐµÐ» Ðµ ÑĦ Ð¾Ð½ Ð° " Ġ` phone Book ` ĠÐ¾ ÑģÑĤÐ°Ð² Ð¸ÑĤÑĮ ĠÑĤÐ¾Ð»ÑĮÐºÐ¾ ĠÑĤÐ°Ðº Ð¸Ðµ ĠÐ¿ Ð°ÑĢ Ñĭ , Ċ Ġ* ĠÐ´Ð»Ñı ĠÐºÐ¾ÑĤÐ¾ÑĢ ÑĭÑħ ĠÑĤ ÐµÐ» Ðµ ÑĦ Ð¾Ð½ ĠÐ½Ð° Ñĩ Ð¸ Ð½Ð° ÐµÑĤÑģÑı ĠÑģ ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÐº Ð¾Ð´Ð° ĠÑģÑĤ ÑĢÐ°Ð½ Ñĭ Ġ` country Code ` Ċ Ġ*/ Ċ fun Ġfilter By CountryCode ( ĊĠĠĠ Ġphone Book : ĠMutable Map < String , ĠString >, ĊĠĠĠ Ġcountry Code : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġval Ġnames ToRemove Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠ Ġfor Ġ(( name , Ġphone ) Ġin Ġphone Book ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! phone . startsWith ( country Code )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames ToRemove . add ( name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfor Ġ( name Ġin Ġnames ToRemove ) Ġ{ ĊĠĠĠĠĠĠĠ Ġphone Book . remove ( name ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÑĤÐµÐº ÑģÑĤ Ð° Ġ` text ` ĠÑĥ Ð± ÑĢ Ð°ÑĤÑĮ ĠÐ·Ð°Ð´ Ð°Ð½ Ð½ÑĭÐµ ĠÑģÐ» Ð¾Ð² Ð° - Ð¿ Ð° ÑĢÐ°Ð· Ð¸ÑĤ Ñĭ Ġ` fill er Words ` Ċ Ġ* ĠÐ¸ ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ¾ÑĤ ÑĦ Ð¸Ð»ÑĮ ÑĤ ÑĢÐ¾Ð² Ð°Ð½ Ð½ÑĭÐ¹ ĠÑĤÐµÐº ÑģÑĤ Ċ Ġ*/ Ċ fun Ġremove Fill er Words ( ĊĠĠĠ Ġtext : ĠList < String >, ĊĠĠĠ Ġvar arg Ġfill er Words : ĠString Ċ ): ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġfill er Word Set Ġ= Ġset Of (* fill er Words ) ĊĊĠĠĠ Ġval Ġres Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġfor Ġ( word Ġin Ġtext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( word Ġ! in Ġfill er Word Set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres Ġ+= Ġword ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġres Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÑĤÐµÐº ÑģÑĤ Ð° Ġ` text ` ĠÐ¿ Ð¾ÑģÑĤ ÑĢÐ¾ Ð¸ÑĤÑĮ ĠÐ¼ Ð½ Ð¾Ð¶ ÐµÑģÑĤÐ²Ð¾ ĠÐ² ÑģÑĤÑĢ ÐµÑĩ Ð°Ñİ ÑīÐ¸ Ñħ ÑģÑı ĠÐ² ĠÐ½ ÐµÐ¼ ĠÑģÐ» Ð¾Ð² Ċ Ġ*/ Ċ fun Ġbuild Word Set ( text : ĠList < String >): ĠMutable Set < String > Ġ{ ĊĠĠĠ Ġval Ġres Ġ= Ġmutable Set Of < String >() ĊĠĠĠ Ġfor Ġ( word Ġin Ġtext ) Ġres . add ( word ) ĊĠĠĠ Ġreturn Ġres Ċ } ĊĊ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐŁ Ð¾ ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð¼ Ñĥ ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½Ð¾Ð¼ Ñĥ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ñĥ Ġ" ÑģÑĤ ÑĥÐ´ ÐµÐ½ÑĤ " -" Ð¾ ÑĨÐµÐ½ ÐºÐ° ĠÐ·Ð° ĠÑįÐº Ð· Ð°Ð¼ ÐµÐ½ " ĠÐ¿ Ð¾ÑģÑĤ ÑĢÐ¾ Ð¸ÑĤÑĮ Ċ Ġ* ĠÐ¾Ð± ÑĢÐ°ÑĤ Ð½ÑĭÐ¹ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ġ" Ð¾ ÑĨÐµÐ½ ÐºÐ° ĠÐ·Ð° ĠÑįÐº Ð· Ð°Ð¼ ÐµÐ½ " -" ÑģÐ¿ Ð¸Ñģ Ð¾Ðº ĠÑģÑĤ ÑĥÐ´ ÐµÐ½ÑĤ Ð¾Ð² ĠÑģ ĠÑįÑĤ Ð¾Ð¹ ĠÐ¾ ÑĨÐµÐ½ Ðº Ð¾Ð¹ ". Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġbuild Gr ades ( map Of (" Ðľ Ð°ÑĢ Ð°ÑĤ " Ġto Ġ 3 , Ġ" Ð¡ ÐµÐ¼ Ñĳ Ð½ " Ġto Ġ 5 , Ġ" Ðľ Ð¸Ñħ Ð° Ð¸Ð» " Ġto Ġ 5 )) Ċ Ġ* ĠĠĠĠ Ġ-> Ġmap Of ( 5 Ġto ĠlistOf (" Ð¡ ÐµÐ¼ Ñĳ Ð½ ", Ġ" Ðľ Ð¸Ñħ Ð° Ð¸Ð» "), Ġ 3 Ġto ĠlistOf (" Ðľ Ð°ÑĢ Ð°ÑĤ ")) Ċ Ġ*/ Ċ fun Ġbuild Gr ades ( grade s : ĠMap < String , ĠInt >): ĠMap < Int , ĠList < String >> Ġ{ ĊĠĠĠ Ġval Ġgrade Map Ġ= Ġmutable Map Of < Int , ĠList < String >>() ĊĠĠĠ Ġfor Ġ(( surname , Ġgrade ) Ġin Ġgr ades ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( grade Ġin Ġgrade Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp List : ĠList < String > Ġ= Ġgrade Map [ grade ] Ġ?: ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrade Map [ grade ] Ġ= Ġtemp List Ġ+ ĠlistOf ( surname ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrade Map [ grade ] Ġ= ĠlistOf ( surname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġgrade Map Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐŀ Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ , ĠÐ² ÑħÐ¾Ð´ Ð¸ÑĤ ĠÐ» Ð¸ ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½ÑĭÐ¹ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ġa ĠÐ² ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½ÑĭÐ¹ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ġb ; Ċ Ġ* ĠÑįÑĤÐ¾ ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ Ñı ÐµÑĤÑģÑı , ĠÐµÑģÐ»Ð¸ ĠÐ²ÑģÐµ ĠÐº Ð»ÑİÑĩ Ð¸ ĠÐ¸Ð· Ġa ĠÑģ Ð¾Ð´ÐµÑĢÐ¶ Ð°ÑĤ ÑģÑı ĠÐ² Ġb ĠÑģ ĠÑĤÐ°Ðº Ð¸Ð¼ Ð¸ ĠÐ¶Ðµ ĠÐ·Ð½Ð°Ñĩ ÐµÐ½Ð¸Ñı Ð¼Ð¸ . Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġcontains In ( map Of (" a " Ġto Ġ" z "), Ġmap Of (" a " Ġto Ġ" z ", Ġ" b " Ġto Ġ" sweet ")) Ġ-> Ġtrue Ċ Ġ* ĠĠ Ġcontains In ( map Of (" a " Ġto Ġ" z "), Ġmap Of (" a " Ġto Ġ" z ee ", Ġ" b " Ġto Ġ" sweet ")) Ġ-> Ġfalse Ċ Ġ*/ Ċ fun Ġcontains In ( a : ĠMap < String , ĠString >, Ġb : ĠMap < String , ĠString >): ĠBoolean Ġ{ ĊĠĠĠ Ġfor Ġ(( key ) Ġin Ġa ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(!( b . containsKey ( key ) Ġ&& Ġa [ key ] Ġ== Ġb [ key ])) Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐ£ Ð´Ð°Ð» Ð¸ÑĤÑĮ ĠÐ¸Ð· ĠÐ¸Ð· Ð¼ÐµÐ½ Ñı ÐµÐ¼ Ð¾Ð³Ð¾ ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½Ð¾Ð³Ð¾ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ð° ĠÐ²ÑģÐµ ĠÐ·Ð°Ð¿Ð¸Ñģ Ð¸ , Ċ Ġ* ĠÐºÐ¾ÑĤÐ¾ÑĢÑĭÐµ ĠÐ² ÑģÑĤÑĢ ÐµÑĩ Ð° ÑİÑĤÑģÑı ĠÐ² ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð¼ ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½Ð¾Ð¼ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ðµ . Ċ Ġ* ĠÐĹ Ð°Ð¿ Ð¸Ñģ Ð¸ ĠÑģ Ñĩ Ð¸ÑĤ Ð°ÑĤÑĮ ĠÐ¾Ð´ Ð¸Ð½ Ð°Ðº Ð¾Ð² Ñĭ Ð¼Ð¸ , ĠÐµÑģÐ»Ð¸ ĠÐ¸ ĠÐº Ð»ÑİÑĩ Ð¸ , ĠÐ¸ ĠÐ·Ð½Ð°Ñĩ ÐµÐ½Ð¸Ñı ĠÑģ Ð¾Ð² Ð¿ Ð°Ð´ Ð° ÑİÑĤ . Ċ Ġ* Ċ Ġ* ĠÐĴ ÐĲ Ð ĸ ÐĿ Ðŀ : ĠÐ½Ðµ Ð¾Ð±ÑħÐ¾Ð´ Ð¸Ð¼ Ð¾ ĠÐ¸Ð· Ð¼ ÐµÐ½Ð¸ ÑĤÑĮ ĠÐ¿ÐµÑĢ ÐµÐ´ Ð°Ð½ Ð½ÑĭÐ¹ ĠÐ² ĠÐº Ð°Ñĩ ÐµÑģÑĤÐ² Ðµ ĠÐ° ÑĢ Ð³ ÑĥÐ¼ÐµÐ½ÑĤ Ð° Ċ Ġ* ĠĠĠĠĠĠĠ ĠÐ¸Ð· Ð¼ÐµÐ½ Ñı ÐµÐ¼ ÑĭÐ¹ ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½ÑĭÐ¹ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġsubtract Of ( a Ġ= Ġmutable Map Of (" a " Ġto Ġ" z "), Ġmap Of (" a " Ġto Ġ" z ")) Ċ Ġ* ĠĠĠĠ Ġ-> Ġa Ġchanges Ġto Ġmutable Map Of () Ġa ka Ġbecomes Ġempty Ċ Ġ*/ Ċ fun Ġsubtract Of ( a : ĠMutable Map < String , ĠString >, Ġb : ĠMap < String , ĠString >) Ġ{ ĊĠĠĠ Ġfor Ġ(( key ) Ġin Ġb ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( a . containsKey ( key ) Ġ&& Ġa [ key ] Ġ== Ġb [ key ]) Ġa . remove ( key ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ´Ð² Ñĥ Ñħ ĠÑģÐ¿Ð¸Ñģ ÐºÐ¾Ð² ĠÐ»Ñİ Ð´ ÐµÐ¹ ĠÐ½ Ð°Ð¹ ÑĤÐ¸ ĠÐ»Ñİ Ð´ ÐµÐ¹ , ĠÐ² ÑģÑĤÑĢ ÐµÑĩ Ð°Ñİ ÑīÐ¸ Ñħ ÑģÑı ĠÐ² ĠÐ¾Ð± Ð¾ Ð¸Ñħ ĠÑģÐ¿Ð¸Ñģ ÐºÐ° Ñħ . Ċ Ġ* ĠÐĴ ĠÐ²Ñĭ ÑħÐ¾Ð´ Ð½Ð¾Ð¼ ĠÑģÐ¿Ð¸Ñģ ÐºÐµ ĠÐ½Ðµ ĠÐ´Ð¾Ð»Ð¶ Ð½Ð¾ ĠÐ±ÑĭÑĤÑĮ ĠÐ¿ Ð¾Ð² ÑĤÐ¾ÑĢ Ñı Ñİ Ð¸Ñħ ÑģÑı ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð¾Ð² , Ċ Ġ* ĠÑĤ . ĠÐµ . Ġwho Are In Both ( listOf (" Ðľ Ð°ÑĢ Ð°ÑĤ ", Ġ" Ð¡ ÐµÐ¼ Ñĳ Ð½ , Ġ" Ðľ Ð°ÑĢ Ð°ÑĤ "), ĠlistOf (" Ðľ Ð°ÑĢ Ð°ÑĤ ", Ġ" Ðľ Ð°ÑĢ Ð°ÑĤ ")) Ġ== ĠlistOf (" Ðľ Ð°ÑĢ Ð°ÑĤ ") Ċ Ġ*/ Ċ fun Ġwho Are In Both ( a : ĠList < String >, Ġb : ĠList < String >): ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠBoolean >() ĊĠĠĠ Ġfor Ġ( name Ġin Ġa ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! map . containsKey ( name )) Ġmap [ name ] Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġfor Ġ( name Ġin Ġb ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( map . containsKey ( name )) Ġmap [ name ] Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġmap ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value ) Ġlist Ġ+= Ġkey ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlist Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ċ Ġ* Ċ Ġ* ĠÐŀ Ð± ÑĬ ÐµÐ´ Ð¸Ð½ Ð¸ÑĤÑĮ ĠÐ´Ð² Ð° ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½ÑĭÑħ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ð° Ġ` map A ` ĠÐ¸ Ġ` map B ` ĠÑģ ĠÐ¿ Ð°ÑĢÐ°Ð¼ Ð¸ Ċ Ġ* Ġ" Ð¸Ð¼ Ñı " -" Ð½Ð¾Ð¼ ÐµÑĢ ĠÑĤ ÐµÐ» Ðµ ÑĦ Ð¾Ð½ Ð° " ĠÐ² ĠÐ¸ ÑĤ Ð¾Ð³ Ð¾Ð² ÑĭÐ¹ ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½ÑĭÐ¹ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² , ĠÑģÐº Ð» Ðµ Ð¸Ð² Ð°Ñı Ċ Ġ* ĠÐ·Ð½Ð°Ñĩ ÐµÐ½Ð¸Ñı ĠÐ´Ð»Ñı ĠÐ¿ Ð¾Ð² ÑĤÐ¾ÑĢ Ñı Ñİ ÑīÐ¸ Ñħ ÑģÑı ĠÐº Ð»ÑİÑĩ ÐµÐ¹ ĠÑĩ ÐµÑĢ ÐµÐ· ĠÐ·Ð°Ð¿ ÑıÑĤ ÑĥÑİ . Ċ Ġ* ĠÐĴ ĠÑģÐ» ÑĥÑĩ Ð° Ðµ ĠÐ¿ Ð¾Ð² ÑĤÐ¾ÑĢ Ñı Ñİ ÑīÐ¸ Ñħ ÑģÑı Ġ* ÐºÐ»ÑİÑĩ ÐµÐ¹ * ĠÐ·Ð½Ð°ÑĩÐµÐ½Ð¸Ðµ ĠÐ¸Ð· Ġmap A ĠÐ´Ð¾Ð»Ð¶ Ð½Ð¾ ĠÐ±ÑĭÑĤÑĮ Ċ Ġ* ĠÐ¿ÐµÑĢ ÐµÐ´ ĠÐ·Ð½Ð°Ñĩ ÐµÐ½Ð¸ ÐµÐ¼ ĠÐ¸Ð· Ġmap B . Ċ Ġ* Ċ Ġ* ĠÐŁ Ð¾Ð² ÑĤÐ¾ÑĢ Ñı Ñİ ÑīÐ¸Ðµ ÑģÑı Ġ* Ð· Ð½Ð°Ñĩ ÐµÐ½Ð¸Ñı * ĠÑģÐ»ÐµÐ´ ÑĥÐµÑĤ ĠÐ´Ð¾Ð±Ð°Ð² Ð»Ñı ÑĤÑĮ ĠÑĤÐ¾Ð»ÑĮÐºÐ¾ ĠÐ¾Ð´ Ð¸Ð½ ĠÑĢÐ°Ð· . Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġmerge Phone Books ( Ċ Ġ* ĠĠĠĠ Ġmap Of (" E mergency " Ġto Ġ" 1 1 2 ", Ġ" Pol ice " Ġto Ġ" 0 2 "), Ċ Ġ* ĠĠĠĠ Ġmap Of (" E mergency " Ġto Ġ" 9 1 1 ", Ġ" Pol ice " Ġto Ġ" 0 2 ") Ċ Ġ* ĠĠ Ġ) Ġ-> Ġmap Of (" E mergency " Ġto Ġ" 1 1 2 , Ġ 9 1 1 ", Ġ" Pol ice " Ġto Ġ" 0 2 ") Ċ Ġ*/ Ċ fun Ġmerge Phone Books ( map A : ĠMap < String , ĠString >, Ġmap B : ĠMap < String , ĠString >): ĠMap < String , ĠString > Ġ{ ĊĠĠĠ Ġval Ġmap Ġ= Ġmap B . to Mutable Map () ĊĠĠĠ Ġmap . put All ( map A ) ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġmap A ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( map B . containsKey ( key ) Ġ&& Ġvalue Ġ!= Ġmap B [ key ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtemp Str Ġ= Ġmap [ key ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Str Ġ+= Ġ", Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Str Ġ+= Ġmap B [ key ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ key ] Ġ= Ġtemp Str ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmap Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÑģÐ¿Ð¸Ñģ ÐºÐ° ĠÐ¿ Ð°ÑĢ Ġ" Ð°Ðº ÑĨÐ¸Ñı " -" ÑģÑĤ Ð¾ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮ " ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½ÑĭÐ¹ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² , Ċ Ġ* ĠÑģ Ð¾Ð´ÐµÑĢÐ¶ Ð° ÑīÐ¸Ð¹ ĠÐ´Ð»Ñı ĠÐº Ð°Ð¶Ð´ Ð¾Ð¹ ĠÐ° Ðº ÑĨÐ¸Ð¸ ĠÐµ Ðµ ĠÑĥ Ñģ ÑĢÐµÐ´ Ð½ ÐµÐ½ Ð½ÑĥÑİ ĠÑģ ÑĤÐ¾ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮ . Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġaverage Stock Price ( listOf (" MS FT " Ġto Ġ 1 0 0 . 0 , Ġ" MS FT " Ġto Ġ 2 0 0 . 0 , Ġ" N FL X " Ġto Ġ 4 0 . 0 )) Ċ Ġ* ĠĠĠĠ Ġ-> Ġmap Of (" MS FT " Ġto Ġ 1 5 0 . 0 , Ġ" N FL X " Ġto Ġ 4 0 . 0 ) Ċ Ġ*/ Ċ fun Ġaverage Stock Price ( stock Prices : ĠList < Pair < String , ĠDouble >> ): ĠMap < String , ĠDouble > Ġ{ ĊĠĠĠ Ġval Ġaverage Stock Price Ġ= Ġmutable Map Of < String , ĠDouble >() ĊĠĠĠ Ġval ĠnumberOf Sum m ations Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġstock Prices . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( average Stock Price . containsKey ( stock Prices [ index ]. first )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Cost Ġ= Ġ( average Stock Price [ stock Prices [ index ]. first ] Ġ?: Ġ 0 . 0 ) Ġ+ Ġstock Prices [ index ]. second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Stock Price [ stock Prices [ index ]. first ] Ġ= Ġtemp Cost ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Sum m ations [ stock Prices [ index ]. first ] Ġ= Ġ( numberOf Sum m ations [ stock Prices [ index ]. first ] Ġ?: Ġ 0 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Stock Price [ stock Prices [ index ]. first ] Ġ= Ġstock Prices [ index ]. second ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Sum m ations [ stock Prices [ index ]. first ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfor Ġ(( key ) Ġin Ġaverage Stock Price ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaverage Stock Price [ key ] Ġ= Ġ( average Stock Price [ key ] Ġ?: Ġ 0 . 0 ) Ġ/ Ġ( numberOf Sum m ations [ key ] Ġ?: Ġ 1 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġaverage Stock Price Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ċ Ġ* Ċ Ġ* ĠÐĴ ÑħÐ¾Ð´ Ð½Ñĭ Ð¼Ð¸ ĠÐ´Ð°Ð½ Ð½Ñĭ Ð¼Ð¸ ĠÑı Ð²Ð»Ñı ÐµÑĤÑģÑı ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½ÑĭÐ¹ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ċ Ġ* Ġ" Ð½ Ð°Ð· Ð² Ð°Ð½Ð¸Ðµ ĠÑĤ Ð¾Ð² Ð°ÑĢ Ð° " -" Ð¿ Ð°ÑĢ Ð° Ġ( ÑĤÐ¸ Ð¿ ĠÑĤ Ð¾Ð² Ð°ÑĢ Ð° , ĠÑĨ ÐµÐ½Ð° ĠÑĤ Ð¾Ð² Ð°ÑĢ Ð° )" Ċ Ġ* ĠÐ¸ ĠÑĤÐ¸Ð¿ ĠÐ¸Ð½ ÑĤÐµÑĢ ÐµÑģ ÑĥÑİ Ñī ÐµÐ³Ð¾ ĠÐ½Ð° Ñģ ĠÑĤ Ð¾Ð² Ð°ÑĢ Ð° . Ċ Ġ* ĠÐĿ Ðµ Ð¾Ð±ÑħÐ¾Ð´ Ð¸Ð¼ Ð¾ ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ½Ð°Ð· Ð² Ð°Ð½Ð¸Ðµ ĠÑĤ Ð¾Ð² Ð°ÑĢ Ð° ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÑĤÐ¸Ð¿ Ð° ĠÑģ ĠÐ¼ Ð¸Ð½ Ð¸Ð¼ Ð°Ð»ÑĮ Ð½Ð¾Ð¹ ĠÑģ ÑĤÐ¾ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮÑİ Ċ Ġ* ĠÐ¸Ð»Ð¸ Ġnull ĠÐ² ĠÑģÐ» ÑĥÑĩ Ð° Ðµ , ĠÐµÑģÐ»Ð¸ ĠÑĤ Ð¾Ð² Ð°ÑĢ Ð¾Ð² ĠÑĤÐ°Ðº Ð¾Ð³Ð¾ ĠÑĤÐ¸Ð¿ Ð° ĠÐ½ ÐµÑĤ . Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġfind Che ape st Stuff ( Ċ Ġ* ĠĠĠĠ Ġmap Of (" Ðľ Ð°ÑĢ Ð¸Ñı " Ġto Ġ(" Ð¿ ÐµÑĩ ÐµÐ½ÑĮ Ðµ " Ġto Ġ 2 0 . 0 ), Ġ" Ðŀ ÑĢ Ðµ Ð¾ " Ġto Ġ(" Ð¿ ÐµÑĩ ÐµÐ½ÑĮ Ðµ " Ġto Ġ 1 0 0 . 0 )), Ċ Ġ* ĠĠĠĠ Ġ" Ð¿ ÐµÑĩ ÐµÐ½ÑĮ Ðµ " Ċ Ġ* ĠĠ Ġ) Ġ-> Ġ" Ðľ Ð°ÑĢ Ð¸Ñı " Ċ Ġ*/ Ċ fun Ġfind Che ape st Stuff ( stuff : ĠMap < String , ĠPair < String , ĠDouble >>, Ġkind : ĠString ): ĠString ? Ġ{ ĊĠĠĠ Ġvar Ġstuff Name : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġstuff Cost Ġ= Ġ- 1 . 0 ĊĠĠĠ Ġfor Ġ(( name , Ġtype And Cost ) Ġin Ġstuff ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( type , Ġcost ) Ġ= Ġtype And Cost ĊĠĠĠĠĠĠĠ Ġif Ġ( /* type And Cost . first */ Ġtype Ġ== Ġkind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stuff Name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstuff Name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstuff Cost Ġ= Ġcost ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( stuff Cost ) Ġ> Ġcost ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstuff Name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstuff Cost Ġ= Ġcost ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġstuff Name Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÐ½ Ð°Ð± Ð¾ÑĢ Ð° ĠÑģ Ð¸Ð¼ Ð²Ð¾Ð» Ð¾Ð² ĠÐ¾Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ , ĠÐ¼Ð¾Ð¶Ð½Ð¾ ĠÐ» Ð¸ ĠÑģ Ð¾ÑģÑĤÐ°Ð² Ð¸ÑĤÑĮ ĠÐ¸Ð· ĠÐ½ ÐµÐ³Ð¾ Ċ Ġ* ĠÑĥÐºÐ°Ð· Ð°Ð½ Ð½Ð¾Ðµ ĠÑģÐ» Ð¾Ð² Ð¾ Ġ( ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢ ĠÑģ Ð¸Ð¼ Ð²Ð¾Ð» Ð¾Ð² ĠÐ¸ Ð³ Ð½ Ð¾ÑĢ Ð¸ ÑĢÑĥ ÐµÑĤÑģÑı ) Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġcan Build From ( listOf (' a ', Ġ' b ', Ġ' o '), Ġ" ba ob ab ") Ġ-> Ġtrue Ċ Ġ*/ Ċ fun Ġcan Build From ( chars : ĠList < Char >, Ġword : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġset Of Characters Ġ= Ġchars . toSet () ĊĠĠĠ Ġif Ġ( word Ġ== Ġ"") Ġreturn Ġtrue ĊĠĠĠ Ġfor Ġ( character Ġin Ġword ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(( character . toLowerCase () Ġ! in Ġset Of Characters ) Ġ&& Ġ( character . toUpperCase () Ġ! in Ġset Of Characters )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¹ ÑĤÐ¸ ĠÐ² ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð¼ ĠÑģÐ¿Ð¸Ñģ ÐºÐµ ĠÐ¿ Ð¾Ð² ÑĤÐ¾ÑĢ Ñı Ñİ ÑīÐ¸Ðµ ÑģÑı ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ñĭ ĠÐ¸ ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ Ċ Ġ* ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½ÑĭÐ¹ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² ĠÑģ ĠÐ¸Ð½ ÑĦÐ¾ÑĢÐ¼ Ð°ÑĨÐ¸ ÐµÐ¹ ĠÐ¾ ĠÑĩ Ð¸Ñģ Ð» Ðµ ĠÐ¿ Ð¾Ð² ÑĤÐ¾ÑĢ ÐµÐ½Ð¸Ð¹ Ċ Ġ* ĠÐ´Ð»Ñı ĠÐº Ð°Ð¶Ð´ Ð¾Ð³Ð¾ ĠÐ¿ Ð¾Ð² ÑĤÐ¾ÑĢ Ñı Ñİ Ñī ÐµÐ³Ð¾ ÑģÑı ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð° . Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ ĠÐ² ÑģÑĤÑĢ ÐµÑĩ Ð°ÐµÑĤÑģÑı ĠÑĤÐ¾Ð»ÑĮÐºÐ¾ ĠÐ¾Ð´ Ð¸Ð½ ĠÑĢÐ°Ð· , ĠÐ² ÐºÐ»ÑİÑĩ Ð°ÑĤÑĮ ĠÐµÐ³Ð¾ ĠÐ² ĠÑĢ ÐµÐ· ÑĥÐ»ÑĮ ÑĤ Ð°ÑĤ Ċ Ġ* ĠÐ½Ðµ ĠÑģÐ»ÐµÐ´ ÑĥÐµÑĤ . Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġextract Repe ats ( listOf (" a ", Ġ" b ", Ġ" a ")) Ġ-> Ġmap Of (" a " Ġto Ġ 2 ) Ċ Ġ*/ Ċ fun Ġextract Repe ats ( list : ĠList < String >): ĠMap < String , ĠInt > Ġ{ ĊĠĠĠ Ġval Ġmap Of Repe ats Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠ Ġval Ġset Of Checked Elements Ġ= Ġmutable Set Of < String >() ĊĠĠĠ Ġfor Ġ( element Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( set Of Checked Elements . contains ( element )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġin Ġmap Of Repe ats ) Ġmap Of Repe ats [ element ] Ġ= Ġ( map Of Repe ats [ element ] Ġ?: Ġ 0 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġmap Of Repe ats [ element ] Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of Checked Elements . add ( element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmap Of Repe ats Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÑģÐ¿Ð¸Ñģ ÐºÐ° ĠÑģÐ» Ð¾Ð² ĠÐ¾Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ , ĠÑģ Ð¾Ð´ÐµÑĢÐ¶ Ð¸ÑĤ ĠÐ» Ð¸ ĠÐ¾ Ð½ ĠÐ° Ð½ Ð°Ð³ ÑĢÐ°Ð¼ Ð¼ Ñĭ Ċ Ġ* Ġ( Ð´ Ð² Ð° ĠÑģÐ» Ð¾Ð² Ð° ĠÑı Ð²Ð»Ñı ÑİÑĤÑģÑı ĠÐ° Ð½ Ð°Ð³ ÑĢÐ°Ð¼ Ð¼ Ð°Ð¼Ð¸ , ĠÐµÑģÐ»Ð¸ ĠÐ¾Ð´ Ð½Ð¾ ĠÐ¼Ð¾Ð¶Ð½Ð¾ ĠÑģ Ð¾ÑģÑĤÐ°Ð² Ð¸ÑĤÑĮ ĠÐ¸Ð· ĠÐ² ÑĤÐ¾ÑĢ Ð¾Ð³Ð¾ ) Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġhas An agrams ( listOf (" ÑĤÐ¾ÑĢ ", Ġ" Ñģ Ð²ÐµÑĤ ", Ġ" ÑĢ Ð¾ÑĤ ")) Ġ-> Ġtrue Ċ Ġ*/ Ċ fun Ġhas An agrams ( words : ĠList < String >): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġwords Set : ĠMutable Set < Set < Char >> Ġ= Ġmutable Set Of () ĊĠĠĠ Ġfor Ġ( element Ġin Ġwords ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp Set Ġ= Ġelement . toSet () ĊĠĠĠĠĠĠĠ Ġif Ġ( words Set . contains ( temp Set )) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġwords Set . add ( temp Set ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfor Ġ( element Ġin Ġwords Set ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġin Ġwords Set . minus Element ( element )) Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġfalse Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ Ð½Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½Ð¾Ð³Ð¾ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ð° ĠÐ· Ð½ Ð°Ðº Ð¾Ð¼ ÑĭÑħ ĠÑĩ ÐµÑĢ ÐµÐ· ĠÐ¾Ð´ Ð½Ð¾ ĠÑĢ Ñĥ Ðº Ð¾Ð¿ Ð¾Ð¶ Ð°ÑĤ Ð¸Ðµ Ġ` friends ` Ċ Ġ* ĠÐ½Ðµ Ð¾Ð±ÑħÐ¾Ð´ Ð¸Ð¼ Ð¾ ĠÐ¿ Ð¾ÑģÑĤ ÑĢÐ¾ Ð¸ÑĤÑĮ ĠÐµÐ³Ð¾ ĠÐ¼ Ð°Ðº Ñģ Ð¸Ð¼ Ð°Ð»ÑĮ Ð½Ð¾Ðµ ĠÑĢÐ°Ñģ ÑĪÐ¸ ÑĢ ÐµÐ½Ð¸Ðµ ĠÐ¿Ð¾ ĠÑĢ Ñĥ Ðº Ð¾Ð¿ Ð¾Ð¶ Ð°ÑĤ Ð¸Ñı Ð¼ , ĠÑĤÐ¾ ĠÐµ ÑģÑĤÑĮ , Ċ Ġ* ĠÐ´Ð»Ñı ĠÐº Ð°Ð¶Ð´ Ð¾Ð³Ð¾ ĠÑĩ ÐµÐ» Ð¾Ð² ÐµÐº Ð° ĠÐ½ Ð°Ð¹ ÑĤÐ¸ ĠÐ²ÑģÐµ Ñħ ĠÐ»Ñİ Ð´ ÐµÐ¹ , ĠÑģ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ñĭ Ð¼Ð¸ ĠÐ¾ Ð½ ĠÐ· Ð½ Ð°Ðº Ð¾Ð¼ ĠÑĩ ÐµÑĢ ÐµÐ· ĠÐ»Ñİ Ð± Ð¾Ðµ Ċ Ġ* ĠÐºÐ¾Ð» Ð¸Ñĩ ÐµÑģÑĤÐ²Ð¾ ĠÑĢ Ñĥ Ðº Ð¾Ð¿ Ð¾Ð¶ Ð°ÑĤ Ð¸Ð¹ . Ċ Ġ* ĠÐ¡ Ñĩ Ð¸ÑĤ Ð°ÑĤÑĮ , ĠÑĩÑĤÐ¾ ĠÐ²ÑģÐµ ĠÐ¸Ð¼ ÐµÐ½Ð° ĠÐ»Ñİ Ð´ ÐµÐ¹ ĠÑı Ð²Ð»Ñı ÑİÑĤÑģÑı ĠÑĥ Ð½Ð¸Ðº Ð°Ð»ÑĮ Ð½Ñĭ Ð¼Ð¸ , ĠÐ° ĠÑĤÐ°Ðº Ð¶Ðµ ĠÑĩÑĤÐ¾ ĠÑĢ Ñĥ Ðº Ð¾Ð¿ Ð¾Ð¶ Ð°ÑĤ Ð¸Ñı Ċ Ġ* ĠÑı Ð²Ð»Ñı ÑİÑĤÑģÑı ĠÐ½Ð°Ð¿ ÑĢÐ°Ð² Ð»ÐµÐ½ Ð½Ñĭ Ð¼Ð¸ , ĠÑĤÐ¾ ĠÐµ ÑģÑĤÑĮ , ĠÐµÑģÐ»Ð¸ ĠÐľ Ð°ÑĢ Ð°ÑĤ ĠÐ· Ð½Ð° ÐµÑĤ ĠÐ¡ Ð²ÐµÑĤ Ñĥ , ĠÑĤÐ¾ ĠÑįÑĤÐ¾ ĠÐ½Ðµ ĠÐ¾ Ð· Ð½Ð°Ñĩ Ð°ÐµÑĤ , Ċ Ġ* ĠÑĩÑĤÐ¾ ĠÐ¡ Ð²ÐµÑĤ Ð° ĠÐ· Ð½Ð° ÐµÑĤ ĠÐľ Ð°ÑĢ Ð°ÑĤÐ° . Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġpropagate Hand sh akes ( Ċ Ġ* ĠĠĠĠ Ġmap Of ( Ċ Ġ* ĠĠĠĠĠĠ Ġ" Mar at " Ġto Ġset Of (" M ik h ail ", Ġ" Sv eta "), Ċ Ġ* ĠĠĠĠĠĠ Ġ" Sv eta " Ġto Ġset Of (" Mar at "), Ċ Ġ* ĠĠĠĠĠĠ Ġ" M ik h ail " Ġto Ġset Of (" Sv eta ") Ċ Ġ* ĠĠĠĠ Ġ) Ċ Ġ* ĠĠ Ġ) Ġ-> Ġmap Of ( Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ" Mar at " Ġto Ġset Of (" M ik h ail ", Ġ" Sv eta "), Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ" Sv eta " Ġto Ġset Of (" Mar at ", Ġ" M ik h ail "), Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ" M ik h ail " Ġto Ġset Of (" Sv eta ", Ġ" Mar at ") Ċ Ġ* ĠĠĠĠĠĠĠ Ġ) Ċ Ġ*/ Ċ fun Ġpropagate Hand sh akes ( friends : ĠMap < String , ĠSet < String >> ): ĠMap < String , ĠSet < String >> Ġ{ ĊĠĠĠ Ġval Ġall Ac qu aint ances Ġ= Ġmutable Map Of < String , ĠMutable Set < String >>() ĊĠĠĠ Ġfor Ġ(( name , ĠlistOf Friends ) Ġin Ġfriends ) Ġ{ ĊĠĠĠĠĠĠĠ Ġall Ac qu aint ances [ name ] Ġ= ĠlistOf Friends . to Mutable Set () ĊĠĠĠĠĠĠĠ Ġval Ġtemp Un modified Friends Set : ĠMutable Set < String > Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠ Ġtemp Un modified Friends Set . addAll ( all Ac qu aint ances [ name ] Ġ?: Ġset Of ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( friends Name Ġin ĠlistOf Friends ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Ac qu aint ances [ name ]?. addAll ( friends [ friends Name ] Ġ?: Ġset Of ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( friends Name Ġ! in Ġall Ac qu aint ances ) Ġall Ac qu aint ances [ friends Name ] Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdifference In Sets : ĠSet < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( all Ac qu aint ances [ name ] Ġ?: Ġset Of < String >()) Ġ- Ġ( temp Un modified Friends Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Un modified Friends Set . addAll ( all Ac qu aint ances [ name ] Ġ?: Ġset Of ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( friends Name Two Ġin Ġdifference In Sets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( friends [ friends Name Two ] Ġ!= Ġnull ) Ġall Ac qu aint ances [ name ]?. addAll ( friends [ friends Name Two ] Ġ?: Ġset Of ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( all Ac qu aint ances [ name ] Ġ!= Ġtemp Un modified Friends Set ) ĊĠĠĠĠĠĠĠ Ġall Ac qu aint ances [ name ]?. remove ( name ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġall Ac qu aint ances Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ Ð½Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐĶ Ð»Ñı ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÑģÐ¿Ð¸Ñģ ÐºÐ° ĠÐ½Ðµ Ð¾ÑĤ ÑĢÐ¸ ÑĨ Ð°ÑĤÐµÐ»ÑĮ Ð½ÑĭÑħ ĠÑĩ Ð¸Ñģ ÐµÐ» ĠÐ¸ ĠÑĩ Ð¸Ñģ Ð»Ð° ĠÐ¾Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ , Ċ Ġ* ĠÐµ ÑģÑĤÑĮ ĠÐ» Ð¸ ĠÐ² ĠÑģÐ¿Ð¸Ñģ ÐºÐµ ĠÐ¿ Ð°ÑĢ Ð° ĠÑĩ Ð¸Ñģ ÐµÐ» ĠÑĤÐ°Ðº Ð¸Ñħ , ĠÑĩÑĤÐ¾ ĠÐ¸ Ñħ ĠÑģ ÑĥÐ¼ Ð¼ Ð° ĠÑĢÐ°Ð ² Ð½Ð° ĠÐ·Ð°Ð´ Ð°Ð½ Ð½Ð¾Ð¼ Ñĥ ĠÑĩ Ð¸Ñģ Ð» Ñĥ . Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ´ Ð° , ĠÐ²ÐµÑĢ Ð½ Ð¸ÑĤÐµ ĠÐ¸ Ñħ ĠÐ¸Ð½ Ð´ ÐµÐº ÑģÑĭ ĠÐ² ĠÐ²Ð¸Ð´ Ðµ ĠPair < Int , ĠInt >; Ċ Ġ* ĠÐµÑģÐ»Ð¸ ĠÐ½ ÐµÑĤ , ĠÐ²ÐµÑĢ Ð½ Ð¸ÑĤÐµ ĠÐ¿ Ð° ÑĢÑĥ ĠPair (- 1 , Ġ- 1 ). Ċ Ġ* Ċ Ġ* ĠÐĺ Ð½ Ð´ ÐµÐº ÑģÑĭ ĠÐ² ĠÑĢ ÐµÐ· ÑĥÐ»ÑĮ ÑĤ Ð°ÑĤ Ðµ ĠÐ´Ð¾Ð»Ð¶ Ð½Ñĭ ĠÑģÐ»ÐµÐ´ Ð¾Ð² Ð°ÑĤÑĮ ĠÐ² ĠÐ¿ Ð¾ÑĢ Ñı Ð´ ÐºÐµ Ġ( Ð¼ÐµÐ½ ÑĮ ÑĪÐ¸ Ð¹ , ĠÐ± Ð¾Ð»ÑĮ ÑĪÐ¸ Ð¹ ). Ċ Ġ* Ċ Ġ* ĠÐŁ Ð¾ÑģÑĤ Ð° ÑĢÐ°Ð ¹ ÑĤ ÐµÑģ ÑĮ ĠÑģ Ð´ÐµÐ» Ð°ÑĤÑĮ ĠÐ² Ð° ÑĪÐµ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸Ðµ ĠÐºÐ°Ðº ĠÐ¼Ð¾Ð¶Ð½Ð¾ ĠÐ± Ð¾Ð» ÐµÐµ ĠÑį ÑĦ ÑĦ ÐµÐºÑĤ Ð¸Ð² Ð½ÑĭÐ¼ , Ċ Ġ* ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ñĥ Ñı ĠÑĤÐ¾ , ĠÑĩÑĤÐ¾ ĠÐ²Ñĭ ĠÑĥ Ð· Ð½Ð° Ð»Ð¸ ĠÐ² ĠÐ´Ð°Ð½ Ð½Ð¾Ð¼ ĠÑĥ ÑĢ Ð¾Ðº Ðµ . Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġfind Sum Of Two ( listOf ( 1 , Ġ 2 , Ġ 3 ), Ġ 4 ) Ġ-> ĠPair ( 0 , Ġ 2 ) Ċ Ġ* ĠĠ Ġfind Sum Of Two ( listOf ( 1 , Ġ 2 , Ġ 3 ), Ġ 6 ) Ġ-> ĠPair (- 1 , Ġ- 1 ) Ċ Ġ*/ Ċ fun Ġfind Sum Of Two ( list : ĠList < Int >, Ġnumber : ĠInt ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠ Ġval Ġset : ĠSet < Int > Ġ= Ġlist . toSet () ĊĠĠĠ Ġval Ġsorted List Ġ= Ġlist . sorted () ĊĠĠĠ Ġfor Ġ(( index , Ġsecond Number ) Ġin Ġsorted List . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġnumber Ġ- Ġsecond Number ĊĠĠĠĠĠĠĠ Ġif Ġ( set . contains ( diff )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( diff Ġ== Ġsecond Number ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ((( index Ġ- Ġ 1 ) Ġ>= Ġ 0 ) Ġ&& Ġsorted List [ index Ġ- Ġ 1 ] Ġ== Ġnumber ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ((( index Ġ+ Ġ 1 ) Ġ<= Ġ( sort edList . size Ġ- Ġ 1 )) Ġ&& Ġsorted List [ index Ġ+ Ġ 1 ] Ġ== Ġnumber ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair ( list . indexOf ( diff ), Ġlist . lastIndexOf ( diff )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Number Index Ġ= Ġlist . indexOf ( second Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Index Ġ= Ġlist . indexOf ( diff ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( second Number Index Ġ> Ġdiff Index ) ĠPair ( diff Index , Ġsecond Number Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠPair ( second Number Index , Ġdiff Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠPair (- 1 , Ġ- 1 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŀ Ñĩ ÐµÐ½ÑĮ ĠÑģÐ» Ð¾Ð¶ Ð½Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐĴ ÑħÐ¾Ð´ Ð½Ñĭ Ð¼Ð¸ ĠÐ´Ð°Ð½ Ð½Ñĭ Ð¼Ð¸ ĠÑı Ð²Ð»Ñı ÐµÑĤÑģÑı ĠÐ° Ñģ Ñģ Ð¾ ÑĨÐ¸ Ð°ÑĤ Ð¸Ð² Ð½ÑĭÐ¹ ĠÐ¼ Ð°ÑģÑģ Ð¸Ð² Ċ Ġ* Ġ" Ð½ Ð°Ð· Ð² Ð°Ð½Ð¸Ðµ ĠÑģ Ð¾Ðº ÑĢÐ¾Ð² Ð¸ Ñī Ð° " -" Ð¿ Ð°ÑĢ Ð° Ġ( Ð² ÐµÑģ ĠÑģ Ð¾Ðº ÑĢÐ¾Ð² Ð¸ Ñī Ð° , ĠÑĨ ÐµÐ½Ð° ĠÑģ Ð¾Ðº ÑĢÐ¾Ð² Ð¸ Ñī Ð° )" Ċ Ġ* ĠÐ¸ ĠÐ² Ð¼ ÐµÑģÑĤ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮ ĠÐ² Ð°ÑĪ ÐµÐ³Ð¾ ĠÑĢ Ñİ Ðº Ð· Ð°Ðº Ð° . Ċ Ġ* ĠÐĿ Ðµ Ð¾Ð±ÑħÐ¾Ð´ Ð¸Ð¼ Ð¾ ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ¼ Ð½ Ð¾Ð¶ ÐµÑģÑĤÐ²Ð¾ ĠÑģ Ð¾Ðº ÑĢÐ¾Ð² Ð¸ Ñī ĠÑģ ĠÐ¼ Ð°Ðº Ñģ Ð¸Ð¼ Ð°Ð»ÑĮ Ð½Ð¾Ð¹ ĠÑģ ÑĥÐ¼ Ð¼ Ð°ÑĢ Ð½Ð¾Ð¹ ĠÑģ ÑĤÐ¾ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮÑİ , Ċ Ġ* ĠÐºÐ¾ÑĤÐ¾ÑĢÑĭÐµ ĠÐ²Ñĭ ĠÐ¼Ð¾Ð¶ÐµÑĤ Ðµ ĠÑĥ Ð½ ÐµÑģÑĤ Ð¸ ĠÐ² ĠÑĢ Ñİ Ðº Ð· Ð°Ðº Ðµ . Ċ Ġ* Ċ Ġ* ĠÐŁ ÐµÑĢ ÐµÐ´ ĠÑĢ ÐµÑĪ ÐµÐ½Ð¸ ÐµÐ¼ ĠÑįÑĤ Ð¾Ð¹ ĠÐ·Ð°Ð´ Ð°Ñĩ Ð¸ ĠÐ» ÑĥÑĩ ÑĪÐµ ĠÐ¿ÑĢ Ð¾Ñĩ Ð¸ÑĤ Ð°ÑĤÑĮ ĠÑģÑĤ Ð°ÑĤÑĮ Ñİ ĠÐĴ Ð¸ ÐºÐ¸ Ð¿ ÐµÐ´ Ð¸Ð¸ Ġ" ÐĶ Ð¸Ð½ Ð°Ð¼ Ð¸ÑĩÐµÑģ ÐºÐ¾ Ðµ ĠÐ¿ÑĢ Ð¾Ð³ÑĢÐ°Ð¼ Ð¼Ð¸ ÑĢÐ¾Ð² Ð°Ð½Ð¸Ðµ ". Ċ Ġ* Ċ Ġ* ĠÐĿ Ð°Ð¿ ÑĢ Ð¸Ð¼ÐµÑĢ : Ċ Ġ* ĠĠ Ġbag Pack ing ( Ċ Ġ* ĠĠĠĠ Ġmap Of (" Ðļ ÑĥÐ± Ð¾Ðº " Ġto Ġ( 5 0 0 Ġto Ġ 2 0 0 0 ), Ġ" Ð¡ Ð» Ð¸ÑĤ Ð¾Ðº " Ġto Ġ( 1 0 0 0 Ġto Ġ 5 0 0 0 )), Ċ Ġ* ĠĠĠĠĠ 8 5 0 Ċ Ġ* ĠĠ Ġ) Ġ-> Ġset Of (" Ðļ ÑĥÐ± Ð¾Ðº ") Ċ Ġ* ĠĠ Ġbag Pack ing ( Ċ Ġ* ĠĠĠĠ Ġmap Of (" Ðļ ÑĥÐ± Ð¾Ðº " Ġto Ġ( 5 0 0 Ġto Ġ 2 0 0 0 ), Ġ" Ð¡ Ð» Ð¸ÑĤ Ð¾Ðº " Ġto Ġ( 1 0 0 0 Ġto Ġ 5 0 0 0 )), Ċ Ġ* ĠĠĠĠĠ 4 5 0 Ċ Ġ* ĠĠ Ġ) Ġ-> Ġempty Set () Ċ Ġ*/ Ċ fun Ġbag Pack ing ( tre as ures : ĠMap < String , ĠPair < Int , ĠInt >>, Ġcapacity : ĠInt ): ĠSet < String > Ġ{ ĊĠĠĠ Ġval Ġall Previous B ags : ĠArray < Array < Int >> Ġ= ĠArray ( tre as ures . size Ġ+ Ġ 1 ) Ġ{ ĠArray ( capacity Ġ+ Ġ 1 ) Ġ{ Ġ 0 Ġ} Ġ} ĊĠĠĠ Ġvar Ġname Index Ġ= Ġ 1 ĊĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. capacity ) Ġall Previous B ags [ 0 ][ j ] Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. tre as ures . size ) Ġall Previous B ags [ j ][ 0 ] Ġ= Ġ 0 ĊĊĠĠĠ Ġfor Ġ(( name , Ġvalues ) Ġin Ġtre as ures ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( temp Capacity Ġin Ġ 0 .. capacity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Capacity Ġ< Ġvalues . first ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Previous B ags [ name Index ][ temp Capacity ] Ġ= Ġall Previous B ags [ name Index Ġ- Ġ 1 ][ temp Capacity ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Previous B ags [ name Index ][ temp Capacity ] Ġ= Ġmax Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Previous B ags [ name Index Ġ- Ġ 1 ][ temp Capacity ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( all Previous B ags [ name Index Ġ- Ġ 1 ][ temp Capacity Ġ- Ġvalues . first ] Ġ+ Ġvalues . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġname Index ++ ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠlistOf Tre as ures Ġ= Ġtre as ures . flatMap Ġ{ ĠlistOf ( it . key ) Ġ} ĊĠĠĠ ĠlistOf Tre as ures . reversed () ĊĊĠĠĠ Ġval Ġset Of Taken Tre as ures Ġ= Ġmutable Set Of < String >() ĊĠĠĠ Ġvar Ġcurrent Capacity Ġ= Ġcapacity ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġtre as ures . size Ġdown To Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( all Previous B ags [ i ][ current Capacity ] Ġ!= Ġall Previous B ags [ i Ġ- Ġ 1 ][ current Capacity ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of Taken Tre as ures . add ( listOf Tre as ures [ i Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Capacity Ġ-= Ġtre as ures [ listOf Tre as ures [ i Ġ- Ġ 1 ]] ?. first Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġset Of Taken Tre as ures Ċ }