package Ġcom . g scan lon 2 1 . reversed ictionary . repository . search Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . g scan lon 2 1 . reversed ictionary . core . repository . Db Bound Resource Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . util . Locale Ċ Ċ @ Experimental Cor outines Api Ċ class ĠGet An agrams ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġword : ĠString , ĊĠĠĠ Ġprivate Ġval Ġdispatcher : ĠCor outine Dispatcher Ġ= ĠDispatch ers . IO Ċ ) Ġ: ĠDb Bound Resource < List < String >> Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides Ġa Ġhash Ġcode Ġunique Ġto Ġthe Ġcharacters Ġcontained Ġin Ġa Ġstring , ĊĠĠĠĠ Ġ* Ġregardless Ġof Ġtheir Ġorder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" Equals Or HashCode ") ĊĠĠĠ Ġprivate Ġclass ĠAn agram Prime ( val Ġstring : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprime Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' a ' Ġto Ġ 2 , Ġ' b ' Ġto Ġ 3 , Ġ' c ' Ġto Ġ 5 , Ġ' d ' Ġto Ġ 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' e ' Ġto Ġ 1 1 , Ġ' f ' Ġto Ġ 1 3 , Ġ' g ' Ġto Ġ 1 7 , Ġ' h ' Ġto Ġ 1 9 , Ġ' i ' Ġto Ġ 2 3 , Ġ' j ' Ġto Ġ 2 9 , Ġ' k ' Ġto Ġ 3 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' l ' Ġto Ġ 3 7 , Ġ' m ' Ġto Ġ 4 1 , Ġ' n ' Ġto Ġ 4 3 , Ġ' o ' Ġto Ġ 4 7 , Ġ' p ' Ġto Ġ 5 3 , Ġ' q ' Ġto Ġ 5 9 , Ġ' r ' Ġto Ġ 6 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' s ' Ġto Ġ 6 7 , Ġ' t ' Ġto Ġ 7 1 , Ġ' u ' Ġto Ġ 7 3 , Ġ' v ' Ġto Ġ 7 9 , Ġ' w ' Ġto Ġ 8 3 , Ġ' x ' Ġto Ġ 8 9 , Ġ' y ' Ġto Ġ 9 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' z ' Ġto Ġ 1 0 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstring . toLowerCase ( Locale . ROOT ). fold ( 1 ) Ġ{ Ġhash : ĠInt , Ġc : ĠChar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ* Ġ( prime Map [ c ] Ġ?: Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieves Ġthe Ġan agrams Ġof Ġ[ word ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠComp ares Ġthe Ġpotential Ġan agrams Ġusing Ġprime Ġnumber Ġhashing ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġload From Db () Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġword Hash Ġ= ĠAn agram Prime ( word ). hashCode () ĊĠĠĠĠĠĠĠ Ġval Ġwords Ġ= Ġwith Context ( dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context . assets . open (" words / en _ US . dic ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reader ( Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Lines () ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ ĠAn agram Prime ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġan agrams Ġ= Ġwords ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . hashCode () Ġ== Ġword Hash Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . string . toLowerCase ( Locale . ROOT ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġword . equals ( it , Ġignore Case Ġ= Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct () ĊĊĠĠĠĠĠĠĠ Ġemit ( an agrams ) ĊĠĠĠ Ġ} Ċ } Ċ