package Ġnl . j ov mit . kat as . gre et Ċ Ċ class ĠG reet er Ġ{ ĊĊĠĠĠ Ġfun Ġg reet ( var arg Ġnames : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparsed Ġ= Ġparse Input ( names ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( parsed . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ" Hello , Ġmy Ġfriend ." ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġg reeting For Single Input ( parsed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ" Hello , Ġ${ names . first ()} Ġand Ġ${ names . last ()} ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmake Complex G reeting ( parsed . to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġg reeting For Single Input ( parsed : ĠList < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġparsed . last () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( name . toUpperCase () Ġ== Ġname ) Ġ" HEL LO Ġ$ name !" ĊĠĠĠĠĠĠĠ Ġelse Ġ" Hello , Ġ${ parsed . last ()} ." ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Complex G reeting ( input : ĠArray < out ĠString >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Names Ġ= Ġinput . filter Ġ{ Ġit . toUpperCase () Ġ!= Ġit Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġsh out ed Names Ġ= Ġinput . filter Ġ{ Ġit . toUpperCase () Ġ== Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend G reeting For Default Names ( default Names ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sh out ed Names . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend G reeting For Sh out ed Names ( sh out ed Names ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠStringBuilder . append G reeting For Sh out ed Names ( sh out ed Names : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġappend (" ĠAND ĠHEL LO Ġ") ĊĠĠĠĠĠĠĠ Ġif Ġ( sh out ed Names . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġsh out ed Names . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Ġ${ sh out ed Names [ index ]} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" ĠAND Ġ${ sh out ed Names . last ()} !") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("${ sh out ed Names . last ()} !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠStringBuilder . append G reeting For Default Names ( default Names : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( default Names . size Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( gre et (* default Names )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Hello , Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġdefault Names . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("${ default Names [ index ]}, Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" and Ġ${ default Names . last ()}. ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Input ( names : ĠArray < out ĠString >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames . flatMap Ġ{ Ġit . split (",") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . trim () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotBlank () Ġ} Ċ } Ċ