Algorithmen als Spiel

Montag, 5. September 2016, 13.31 Uhr

Algorithmen und Programmierung können ausgesprochen lustig daherkommen – zum Beispiel in Form des Logik-Puzzles Human Resource Machine (Windows, Mac, iOS), von den Leuten, denen wir auch die hübschen Spiele „World of Goo“ und „Little Inferno“ verdanken. Bei Human Resource Machine muss man kleine Programmieraufgaben lösen. Dazu steuert man ein Männchen, dessen Job darin besteht, Pakete, auf denen Ziffern und Buchstaben stehen, von der Inbox in die Outbox zu befördern. Zur Steuerung stehen einfache Anweisungen zur Verfügung, die im Laufe des Spiels stetig erweitert werden. Aus diesen Anweisungen lässt sich einfacher Programmcode erzeugen, den das Männchen ausführt – immer unter den strengen Augen seiner Vorgesetzten, die ihn bei Fehlern anraunzen. Programme setzt man einfach zeilenweise zusammen, man kann kleine Testläufe durchführen, ein Programm Schritt für Schritt ausführen und gegebenenfalls debuggen.

Anfangs ist alles noch ganz einfach, da hat man die Befehle inbox – das Männchen nimmt ein Paket aus der Inbox – und outbox – das Paket wird in die Outbox gelegt. Die erste Aufgabe besteht darin, den Inhalt der Inbox in die Outbox zu befördern. In der Inbox sind drei Pakete, also:

inbox
outbox
inbox
outbox
inbox
outbox

Beim nächsten Mal kommt ein jump hinzu. Man soll wieder alle Pakete von der In- in die Outbox befördern, aber nur 3 Anweisungen benötigen:

inbox
outbox
jump inbox

Mit jedem Level werden die Aufgaben etwas komplizierter, es kommen Anweisungen wie copyto, copyfrom, add oder jump if zero hinzu, als Zwischenspeicher dient der Fußboden. Später werden vermutlich noch weitere Anweisungen hinzukommen, aber so weit bin ich noch nicht.

Das klingt jetzt ziemlich abstrakt und nicht besonders spaßig – also rasch ein Beispiel. Hier soll man alle Nullen in die Outbox befördern:

Human Resource Machine Screenshot

Die Lösung dieser Aufgabe ist simpel. Aber es gibt auch Sonderaufgaben für die Größe und die Laufzeitoptimierung:

Human Resource Machine Screenshot

An der Laufzeitoptimierung hänge ich derzeit übrigens fest (ich könnte natürlich auch einfach mit dem nächsten Level weitermachen).


Ihr Kommentar Name (erforderlich):

Mail (wird nicht publiziert) (erforderlich):

Website: