Direkt zum Hauptbereich

Rust


Ich habe mich, auf Vorschlag von Sebastian hin, die letzten Wochen mit einer Implementierung von "Vier gewinnt" in Rust versucht.

An Rust gefällt mir das Speicherkonzept, das ohne Garbage Collection, Speicherlecks und Nullpointer-Exceptions zur Compile-Zeit zu verhindern sucht.

Auch die Entwicklungsumgebung mit Cargo, der Paketverwaltung und der integrierten Testunterstützung kommt mir sehr entgegen.

Aber die Syntax erscheint mir nicht ganz rund und irgendwie inkonsistent. Die Verwendung von traits als Interfaces habe ich noch nicht durchdrungen. Und Marcos hielt ich eigentlich für ausgestorben.

Kommen wir aber zur "Vier gewinnt" Implementierung - meiner Nemesis: Ich habe mich wieder an den MinMax-Algorithmus versucht. Nach C++, Java, C# nun also in Rust. Und ich bin wieder gescheitert. Gut, der Algorithmus an sich funktioniert, ist aber entsprechend zu langsam, um ein perfektes Spiel zu spielen. Bis zu 7 Züge kann ich ihn nur voraus rechnen lassen, damit der Spieler nicht minutenlang warten muss. Und dann kann auch ich ihn noch schlagen. Bei 8 vorausberechneten Zügen hat mich das Programm geschlagen. Da konnte ich aber nebenher noch ein Buch lesen.

Es gäbe Verbesserungen des Algorithmus, wie z.B. die Alpha-Beta-Suche. Ich habe mir auch eine solche Implementierung in C++ angeschaut, aber verstehen tue ich sie nicht.

Ich gebe jetzt auch auf. Der Spaß ist jetzt irgendwie raus aus der Sache. Soll sich ein neuronalen Netz jetzt damit herum ärgern.

Nachtrag:
Nach nochmaliger Recherche bin ich noch auf andere Dokumente gestoßen. Vielleicht können die mich ja noch erhellen. Aber nur mit Widerwillen.

Kommentare

  1. Ich muss zugeben, das mit Rust war keine gute Idee von mir. Ich zumindest für meinen Teil habe enorme Schwierigkeiten mit Rust warm zu werden. Insbesondere kann ich nicht nachvollziehen, warum einfachste Konzepte wie Klassen wieder so anders gelöst werden.

    Zweitens glaube ich, Vier Gewinnt ist kein gutes Beispiel für ein Spiel, wenn man einen AI Bot entwickeln will, da man keinen Trainingspartner hat. Andere Spiele wie Tetris oder auch 2048 geben wesentlich einfacher Feedback, von dem man lernen kann. Dadurch kann man einen Bot unendlich oft gegen das Spiel trainieren lassen ohne vorher einen perfekten Gegenspieler zu implementieren.

    AntwortenLöschen
  2. Einen Tetris-Clone würde ich auch gerne mal wieder spielen.

    AntwortenLöschen

Kommentar veröffentlichen

Beliebte Posts aus diesem Blog

I see u

  Beim alljährlichen erzwungenen Aufräumen fand sich dieses Bild. Das älteste Kind hatte es vor etwa ein oder zwei Jahren gemalt und dann an die Tür des zweitältesten Kindes geklebt. Lieb, nicht?

Keine Angst vorm Manchester-Liberalismus

Ich recherchiere gerade etwas über das 19. Jahrhundert und die Industrielle Revolution, was sich jedoch noch etwas hinziehen wird. Im Geiste von Open Science möchte ich jedoch bereits einige Quellen vorstellen; zum Thema "Manchester-Liberalismus". Die heute gängige Vorstellung einer Ideologie, die nur auf das Eigeninteresse und die Vorteile der "Reichen" bedacht war und des Staates als Hüter des Gemeinwohls und Beschützer der Armen, der sich im 19. Jahrhundert völlig aus der Wirtschaft heraushielt, wird in den angeführten Texten als nicht ganz korrekt präsentiert. Vielmehr zeigt sich, dass die Interventionen des Staats die Lage der Armen verschlechterte und durch das Zurückdrängen des Staates verbessert wurde. Ich werde darauf hoffentlich später noch genauer eingehen können. Gerecht ist nur die Freiheit von Richard Herzinger und Mythos Manchestertum von Detmar Doering

Männer sind nicht wertvoll genug, um nicht im Kampf eingesetzt zu werden

Arne Hoffmann hat einen Artikel von Bettina Arndt in Teilen übersetzt . Ich frage mich nun, ob diese unterschiedliche Wertung von Leben, die Arndt beschreibt, zu tief, vielleicht sogar genetisch, in uns verankert ist; und wir deswegen niemals wirkliche Gleichberechtigung erreichen werden/können. Sind wir vielleicht nur in der Lage, weil es unserer kulturellen/biologischen Programmierung entspricht, Empathie für Frauen und Mädchen zu empfinden, nicht jedoch für Männer und Jungen? Ist deswegen der Feminismus nur eine andere Variante der Jahrtausende alten Ritterlichkeit und des Gentlemantums ("Mädchen schlägt man nicht." - "Frauen und Kinder zuerst" und damit aber implizit: "Jungen darf man schlagen", "Männer zuletzt.")? Müssen wir also einfach akzeptieren, dass unsere Gemeinschaft nur weibliche Menschen vor Gewalt schützen will und dass männliche Menschen sich eben verletzen, verstümmeln und töten lassen müssen?