package Ġedu . gate ch . cs 2 3 4 0 . space tr ader redux . domain Ċ Ċ import Ġedu . gate ch . cs 2 3 4 0 . space tr ader redux . domain . entities . enums . Sol ar System Name Ċ import Ġjava . util . Random Ċ import Ġkotlin . collections . HashSet Ċ Ċ class ĠSol ar System ( val Ġname : ĠSol ar System Name , Ġval Ġlocation : ĠPoint , Ġrand : ĠRandom ) Ġ{ ĊĠĠĠ Ġval Ġplan ets : ĠArray < Planet > ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠHashSet < String >() ĊĠĠĠĠĠĠĠ Ġthis . plan ets Ġ= ĠArray ( rand . nextInt ( 1 0 ) Ġ+ Ġ 1 ){ generate Random Planet ( rand )} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġplan ets . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurr Planet Ġ= Ġgenerate Random Planet ( rand ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( set . contains ( curr Planet . name . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Planet Ġ= Ġgenerate Random Planet ( rand ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( curr Planet . name . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Random Planet ( rand : ĠRandom ): ĠPlan et Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPlan et ( rand ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġsb . append (" Sol ar ĠSystem Ġ" Ġ+ Ġname . displayName Ġ+ Ġ" Ġat Ġ(" Ġ+ Ġlocation . x Ġ+ Ġ", Ġ" Ġ+ Ġlocation . y Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ") Ġcontaining Ġplan ets : Ġ{ ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġplan ets . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( plan ets [ i ]. toString () Ġ+ Ġ", Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsb . append ( plan ets [ plan ets . size Ġ- Ġ 1 ]. toString () Ġ+ Ġ" }") ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠ Ġ} Ċ } Ċ