package Ġio . github . un red undant . satisf aket ion . core Ċ Ċ import Ġkotlin . random . Random Ċ Ċ /** Ċ Ġ* ĠCollection Ġof Ġhandy Ġextensions Ġused Ġthroughout Ġthe Ġlibrary . Ċ Ġ*/ Ċ object ĠExtensions Ġ{ ĊĠ Ġprivate Ġobject ĠAl phabet Ġ{ ĊĠĠĠ Ġconst Ġval Ġsource Ġ= Ġ" abcdefgh ijkl mnopqrst uvw xyz " ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRe places Ġevery Ġ`# ` Ġchar Ġfor Ġthis Ġ[ String ] Ġreceiver Ġwith Ġa Ġrandom Ġint Ġfrom Ġ 0 Ġto Ġ 9 Ġinclusive ĊĠĠ Ġ* Ġand Ġreturns Ġthe Ġmodified Ġ[ String ]. ĊĠĠ Ġ* Ġ@ param Ġrandom ĠSeed Ġfrom Ġwhich Ġto Ġgenerate Ġall Ġrandom Ġvalues . Ġ ĠDefaults Ġto Ġ[ Random . Default ] ĊĠĠ Ġ* Ġ@ receiver Ġ[ String ] ĊĠĠ Ġ* Ġ@ return Ġ" Number - ified " Ġvalue ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" Magic Number ") ĊĠ Ġfun ĠString . num er ify ( random : ĠRandom Ġ= ĠRandom . Default ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġif Ġ( it Ġ== Ġ'# ') Ġrandom . nextInt ( 1 0 ). toString () Ġelse Ġ"$ it " Ġ} ĊĠĠĠĠĠ Ġ. join ToString ("") ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRe places Ġevery Ġ` ?` Ġchar Ġfor Ġthis Ġ[ String ] Ġreceiver Ġwith Ġa Ġrandom Ġupper - case Ġletter Ġfrom Ġthe ĠEnglish Ġalphabet ĊĠĠ Ġ* Ġand Ġreturns Ġthe Ġmodified Ġ[ String ]. ĊĠĠ Ġ* Ġ@ param Ġrandom ĠSeed Ġfrom Ġwhich Ġto Ġgenerate Ġall Ġrandom Ġvalues . Ġ ĠDefaults Ġto Ġ[ Random . Default ] ĊĠĠ Ġ* Ġ@ param Ġupper Ġflag Ġthat Ġwill Ġconvert Ġall Ġreplaced Ġcharacters Ġto Ġtheir Ġuppercase Ġrepresentation . Ġ ĠDefaults Ġto Ġtrue ĊĠĠ Ġ* Ġ@ return Ġ" Letter - ified " Ġvalue ĊĠĠ Ġ*/ ĊĠ Ġfun ĠString . letter ify ( random : ĠRandom Ġ= ĠRandom . Default , Ġupper : ĠBoolean Ġ= Ġtrue ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġif Ġ( it Ġ== Ġ'? ') Ġrandom . next Letter ( upper Ġ= Ġupper ). toString () Ġelse Ġ"$ it " Ġ} ĊĠĠĠĠĠ Ġ. join ToString ("") ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġa Ġrandom Ġletter Ġfrom Ġ[ Alphabet . source ] ĊĠĠ Ġ* Ġ@ param Ġupper Ġflag Ġthat Ġwill Ġconvert Ġall Ġreplaced Ġcharacters Ġto Ġtheir Ġuppercase Ġrepresentation . Ġ ĠDefaults Ġto Ġtrue ĊĠĠ Ġ* Ġ@ return Ġgenerated Ġ[ Char ] ĊĠĠ Ġ*/ ĊĠ Ġfun ĠRandom . next Letter ( upper : ĠBoolean ): ĠChar Ġ{ ĊĠĠĠ Ġval Ġsource Ġ= Ġif Ġ( upper ) ĠAl phabet . source . uppercase () Ġelse ĠAl phabet . source ĊĠĠĠ Ġreturn Ġsource [ nextInt ( source . length )] ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġa Ġrandom Ġelement Ġof Ġa Ġlist ĊĠĠ Ġ* Ġ@ receiver ĠList Ġfrom Ġwhich Ġto Ġpick Ġitem Ġfrom ĊĠĠ Ġ* Ġ@ param Ġrandom ĠSeed Ġfrom Ġwhich Ġto Ġgenerate Ġall Ġrandom Ġvalues . Ġ ĠDefaults Ġto Ġ[ Random . Default ] ĊĠĠ Ġ* Ġ@ return ĠSingle Ġelement Ġ[ T ] Ġfrom Ġreceiver ĊĠĠ Ġ*/ ĊĠ Ġfun Ġ< T > ĠList < T >. next Item ( random : ĠRandom Ġ= ĠRandom . Default ): ĠT Ġ= Ġget ( random . nextInt ( size )) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAllows Ġfor Ġa Ġ[ Mut ator ] Ġto Ġbe Ġapplied Ġdirectly Ġto Ġa Ġgiven Ġ[ Generator ] ĊĠĠ Ġ* Ġ@ receiver Ġ[ Generator ] Ġof Ġtype Ġ[ T ] ĊĠĠ Ġ* Ġ@ param Ġmut Ġ[ Mut ator ] Ġthat Ġtakes Ġthe Ġreceiver Ġand Ġreturns Ġa Ġ[ Generator ] Ġof Ġtype Ġ[ TT ] ĊĠĠ Ġ* Ġ@ return Ġ[ Generator ] Ġof Ġtype Ġ[ TT ] ĊĠĠ Ġ*/ ĊĠ Ġfun Ġ< T , ĠTT > ĠGenerator < T >. mutate ( mut : ĠMut ator < T , ĠTT >): ĠGenerator < TT > Ġ{ ĊĠĠĠ Ġreturn Ġmut . mutate ( this ) ĊĠ Ġ} Ċ } Ċ