Tracks
/
Julia
Julia
/
Übungen
/
Robotername
Robotername

Robotername

Mittel

Anleitung

Verwalte die Einstellungen der Roboterfabrik.

Wenn ein Roboter das Werk verlässt, hat er noch keinen Namen.

Wenn du einen Roboter zum ersten Mal einschaltest, wird ein zufälliger Name erzeugt: zwei Großbuchstaben gefolgt von drei Ziffern, zum Beispiel RX837 oder BC811.

Ab und zu müssen wir einen Roboter auf seine Werkseinstellungen zurücksetzen. Dabei wird sein Name gelöscht. Wenn du ihn das nächste Mal fragst, antwortet er mit einem neuen zufälligen Namen.

Die Namen müssen zufällig sein und dürfen keinem vorhersehbaren Muster folgen. Zufällige Namen bringen die Gefahr von Kollisionen mit sich. Deine Lösung muss sicherstellen, dass jeder vorhandene Roboter einen eindeutigen Namen hat.

Die Testsuite erzeugt standardmäßig nur etwa 100 Namen. Es gibt etwa 700.000 gültige Namen, es besteht also nur eine geringe Wahrscheinlichkeit für Kollisionen. Überlege, deine Lösung zusätzlich zur Testsuite auch auf andere Weise auf Kollisionen zu testen.

Diese Übung setzt unsere Erkundung von Julias Typsystem fort, diesmal mit veränderlichen Typen, und führt uns in die Erzeugung von Zufallszahlen ein.

Wir stellen uns vor, dass das Zurücksetzen des Roboters auf die Werkseinstellungen wie eine Operation ist: Sie verändert das Subjekt, ersetzt es aber nicht. Wir hätten das Problem auch so modellieren können, dass das Zurücksetzen eines Roboters einen neuen Roboter erzeugt, aber nicht jedes Problem lässt sich allein mit unveränderlichen Datenstrukturen modellieren (selbst rein funktionale Sprachen haben es mit Veränderlichkeit innerhalb ihrer Laufzeitumgebung zu tun!).

In Julia tragen Funktionen, die ihre Argumente verändern, per Konvention das Suffix !. Unsere Methode dafür heißt also reset!.

Das ist nur eine Konvention, aber fast der gesamte veröffentlichte Julia-Code folgt ihr, und vielleicht stimmst du ja zu, dass sie recht hilfreich ist!

Hinweise

Du musst eine Methode zum Erzeugen eindeutiger Namen, eine Struktur zur Beschreibung von Robotern, eine Methode zum Zurücksetzen eines Roboters und eine Methode zum Abrufen des Namens eines Roboters definieren.

Vielleicht ist es hilfreich, dein Programm zunächst so zu entwerfen, dass es einfach einen zufälligen Namen für einen Roboter ausgibt (ohne dir Gedanken über Kollisionen zu machen), und dir erst später Gedanken über ein Verfahren zu machen, das das Ausgeben doppelter Namen von vornherein vermeidet. Denk beim Entwurf darüber nach, wie sich die Laufzeit der Namenserzeugung ändert, wenn die Namen knapp werden. Welche Garantien möchtest du dem Aufrufer bieten?


Quelle

Eine Debugging-Sitzung mit Paul Blackwell bei gSchool.
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Julia Exercism

Bereit, mit Robotername zu starten?

Melde dich bei Exercism an, um Julia mit 35 Konzepte128 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.