package Ġorg . ph c 1 9 9 0 . mam mo k . topology . space . search Ċ Ċ import Ġorg . ph c 1 9 9 0 . mam mo k . topology . space . Finite Space Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Space ] Ġconst it uted Ġby Ġa Ġfinite Ġnumber Ġof Ġpossib ilities . Ċ Ġ* Ċ Ġ* Ġ@ see ĠFin ite Space Ċ Ġ* Ġ@ author Ġ[ P au ĠHe br ero ĠCas as ay as ]( https :// github . com / ph c 1 9 9 0 ) Ġ- ĠMay Ġ 2 8 , Ġ 2 0 2 0 Ċ Ġ*/ Ċ class ĠList ed Space < T >( private Ġval Ġvalues : ĠList < T >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġneighborhood Function : Ġ(( point : ĠT ) Ġ-> ĠArray < T >? )? Ġ= Ġnull ): ĠFin ite Space < T > Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( values . isEmpty ()) Ġthrow ĠIllegalArgumentException (" Set Ġis Ġnull .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠindexOf ( t : ĠT ): ĠInt Ġ= Ġvalues . indexOf ( t ) ĊĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ= Ġvalues . size ĊĠĠĠ Ġoverride Ġfun Ġget ( i : ĠInt ): ĠT Ġ= Ġvalues [ i ] ĊĠĠĠ Ġoverride Ġfun Ġneighbors ( t : ĠT ): ĠArray < T >? Ġ{ ĊĠĠĠĠĠĠĠ Ġneighborhood Function ?. let Ġ{ function Ġ-> Ġfunction . invoke ( t )?. let Ġ{ Ġarray Ġ-> Ġreturn Ġarray Ġ}} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }