Kezeld a robotgyár beállításait.
Amikor egy robot legördül a gyártósorról, még nincs neve.
Amikor először bekapcsolsz egy robotot, egy véletlenszerű név generálódik: két nagybetű, majd három számjegy, például RX837 vagy BC811.
Időnként vissza kell állítanunk egy robotot a gyári beállításaira, ami azt jelenti, hogy a neve törlődik. Amikor legközelebb rákérdezel, az a robot egy új véletlenszerű névvel válaszol.
A neveknek véletlenszerűnek kell lenniük: nem követhetnek kiszámítható sorrendet. A véletlenszerű nevek használata ütközés kockázatával jár. A megoldásodnak biztosítania kell, hogy minden létező robot neve egyedi legyen.
A tesztcsomag alapértelmezés szerint csak mintegy 100 nevet generál. Nagyjából 700k érvényes név létezik, így csak csekély az esély az ütközésre. Érdemes lehet a megoldásodat a tesztcsomag mellett más módon is tesztelni ütközések szempontjából.
Ez a feladat folytatja a Julia típusrendszerének felfedezését, ezúttal módosítható típusokkal, és megismertet minket a véletlenszám-generálással.
Képzeljük el, hogy a robot visszaállítása a gyári beállításokra olyan, mint egy műtét: változtat az alanyon, de nem cseréli ki azt. A problémát úgy is modellezhettük volna, hogy a robot visszaállítása egy új robotot hoz létre, de nem minden probléma modellezhető kizárólag változtathatatlan adatszerkezetekkel (még a tisztán funkcionális nyelvek is szembesülnek a módosíthatósággal a saját futtatókörnyezetükben!).
Juliában a konvenció szerint azok a függvények, amelyek módosítják az argumentumaikat, ! utótagot kapnak.
Ezért a visszaállítást végző metódusunk neve reset! lesz.
Ez csupán konvenció, de szinte az összes publikált Julia-kód követi, és lehet, hogy te is egyetértesz majd vele, hogy igazán hasznos!
Definiálnod kell majd egy metódust egyedi nevek generálására, egy struktúrát a robotok leírására, egy metódust a robot visszaállítására, és egy metódust a robot nevének lekérdezésére.
Hasznos lehet, ha először úgy tervezed meg a programot, hogy csak generáljon egy véletlenszerű nevet egy robotnak (anélkül, hogy az ütközésekkel törődnél), majd később gondolkodj el egy olyan sémán, amely soha nem ad ki kétszer ugyanazt a nevet. A tervezés során gondold át, hogyan változik a névgenerálás futásideje, ahogy a nevek elfogynak. Milyen garanciákat szeretnél nyújtani a hívónak?
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Julia nyelvet 35 fogalom128 feladat segítségével, valódi emberi mentorálással, mindez ingyen.