Robotnév

Robotnév

Közepes

Utasítások

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!

Tippek

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?


Forrás

Hibakeresési munkamenet Paul Blackwell-lel a gSchoolban.
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Julia Exercism

Készen állsz elkezdeni a(z) Robotnév feladatot?

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.