Hallo, inzwischen habe ich mit dem Seeeduino XIAO (Mini Arduino auf SAMD Basis, 48Mhz, 256kb Flash, 32 kb RAM) und einem Display mit Tastenbedienung das Spielt 4 Gewinnt an nur 2 Abenden implementiert. Die Engine habe ich von 1998 aus dem Netz von einem Programmierer den den MinMax Algorithmus und Alpha Beta Pruning umgesetzt hat und sie in die Arduino IDE eingepasst. Grundsätzlich ist das ein binärer Baum, mit Vorausberechnung, 8 Rekursionsstufen sind möglich mit den 32kb des Xiao. 1 Zug dauert zwischen 1s und 8s, je nach Komplexität. Inzwischen haben etliche Personen versucht den XIAO zu schlagen, nicht ein einziger hat jemals ein Spiel gewonnen. Lässt man es gegen sich selbst spielen enden die meisten Spiele unentschieden, weil das Board voll ist. Dauert aber, rund 2 Minuten pro Spiel. Ein Arbeitskollege fluchte nur als er den winzigen XIAO sah, dass dieses Teilchen bei diesem Spiel immer besser war als er. Hat man überhaupt eine Chance den zu schlagen?
Hallo Christian, laut Wikipedia gewinnt der perfekte Spieler wenn er beginnt und mir dem ersten Stein in der Mitte anfängt. Ist wie beim Schach .... :-)
Beitrag #6751917 wurde von einem Moderator gelöscht.
Wenn man anfängt, soll es eine einfach Möglichkeit geben, nicht zu verlieren. Einfach im Sinne von jeder Dreijährige kann das nach kurzer Instruktion.
Schnedermann schrieb im Beitrag #6751917: > Hallo Christian, > > laut Wikipedia gewinnt der perfekte Spieler wenn er beginnt und mit dem > ersten Stein in der Mitte anfängt. > > Ist wie beim Schach .... :-) Beim Schach gewinnt man so aber nur wenn man gleich am Anfang eine 6 würfelt.
A. S. schrieb: > Wenn man anfängt, soll es eine einfach Möglichkeit geben, nicht zu > verlieren. Einfach im Sinne von jeder Dreijährige kann das nach kurzer > Instruktion. Das kannste wohl getrost vergessen, da der Rechner nicht immer die gleichen Züge spielt, sondern der Zufall (rand()) da mit im Spiel ist und zu Beginn natürlich mit randomSeed aus einem AD Port eine Startzahl erzeugt wird. Sonst würde ja jede Partie die er gegen sich selbst spielt gleich ablaufen. Tun sie aber nicht.
Jedes Mädel in Taiwans Bars hat dich schon vor 20 Jahren bei dem Spiel abgezogen...
Frag doch die Teilnehmer deines kleinen Feldversuchs, ob sie wie der XIAO 8 Rekursionsstufen im Kopf berechnet haben...
Die Regeln um ein "perfekter Spieler" zu werden sind bei 4 Gewinnt wesentlich einfacher als beim Schach: https://www.wired.co.uk/article/maths-christmas-board-games-win So how do you become a perfect player? Allis’ Connect Four-winning computer program VICTOR holds the answer. VICTOR’s moves are dictated by nine rules. One of the simpler ones, called ‘baseinverse’, says that you can always block a four-in-a-row that needs two playable squares. Another, called ‘vertical’, says you can always block a vertical four-in-a-row by playing one of the two squares directly above. If you want to be a Connect Four champion every time, you can find the other more complicated and hard-to-master rules in Allis’ 91-page thesis. Enjoy! http://www.informatik.uni-trier.de/~fernau/DSL0607/Masterthesis-Viergewinnt.pdf
Christian J. schrieb: > Das kannste wohl getrost vergessen, da der Rechner nicht immer die > gleichen Züge spielt, sondern der Zufall (rand()) da mit im Spiel ist > und zu Beginn natürlich mit randomSeed aus einem AD Port eine Startzahl > erzeugt wird. Wie kannst Du, ohne die Regeln zu kennen, wissen, dass sie nicht funktioniert? Und wie kann die Zugfolge des Rechners eine Rolle spielen, wenn ein Dreijähriger es spielen können soll? Regel A: Setze immer auf den Gegner. Regel B: sonst möglichst mittig. Ich habe es nie ausprobiert, es scheint aber sehr plausibel: Durch den "Versatz (B)" in der Mitte gibt es niemals eine Waagerechte Straße. Durch das "drüber (A)" gibt es niemals eine senkrechte Straße Durch die "waagerechten Streifen (A)" gibt es niemals eine schräge Straße. Also wenn es einer schaft, meine Nichte zu schlagen, ... 1000€! Der Jüngere fängt an.
Hi, ich spiele ab und an For In A Line von A Design Studio auf dem Handy. Wenn ich aufpassse und keine Fehler mache, Gewinne ich auf Stufe 10. Bisher habe ich noch kein stärkes Spiel gefunden. Gegen deine Nichte würde ich es mal versuchen.
A. S. schrieb: > Regel A: Setze immer auf den Gegner. > Regel B: sonst möglichst mittig. So einfach ist das nicht. Es macht schon Sinn sich theoretisch mit dem Spiel zu beschäftigen. Es gibt genug paper dazu - das kann jeder durch selbst anschauen. Ich habe in meiner Schulzeit auch Mal ein Engine für einen atmega8 geschrieben. Alpha-Beta, Suchtiefe 4. Das Ziel des Engines war es, die Steine taktisch zu setzen. Das Engine hat auch die meisten Spiele gewonnen - meist erst, wenn fast alle Felder belegt waren durch Zugzwang.
avr schrieb: > So einfach ist das nicht. Es geht darum, dass niemand gegen einen Dreijährigen gewinnen kann, wenn er die beiden Regeln befolgt und anfängt. Natürlich kann er mit der Regel auch selber nie gewinnen, zudem versagt sie vollkommen (Matt in 4 Zügen) wenn der andere anfängt.
A. S. schrieb: > Es geht darum, dass niemand gegen einen Dreijährigen gewinnen kann, wenn > er die beiden Regeln befolgt und anfängt. Das vielleicht. Aber mit Anzug unentschieden zu spielen ist eben für den Nachziehenden ein gutes Ergebnis bei dem Spiel.
Ich habe jetzt Dutzende Spiele ohne Vorbildung über Strategien gemacht. Und den Xioa auch stundenlang gegen sich selbst spielen lassen. Spielt er gegen sich selbst baut er hauptsächlich Türme auf, die gefüllt werden bis oben und gewinnt oder verliert meist wegen Zugzwang wenn das Brett nahezu voll ist. Die Spiele sehen ziemlich langweilig aus. Spiele ich sieht das alles etwas abwechslungsreicher aus, ich verliere aber hauptsächlich deswegen weil ich kaum mehr als 2 Züge voraus denke und stolpere dann meist in Fallen, also dass "er" nur einen Stein legen muss, um dann zwei Möglichkeiten zu haben 4er fertig zu stellen. Die AI verfügt natürlich über keine Strategien oder kann Fallen bauen. Die geht nur stur nach Erfolgsaussichten in 2-3-4 Zügen einen Vierer bauen zu können. Und da sie dabei alle meine möglichen Züge vorhersehen kann ist sie im Vorteil. Zumindest nicht verlieren geht über Blockade, aber auch das endet oft damit dass gegen Ende doch verloren wird wegen Zugzwang. Bei Schach früher habe ich nur gegen Menschen gespielt, weil die Fehler machen können. Gegen einen Rechner, die es schon in den 80igern in guter Spielstärke gab fand ich es stinklangweilig.
Genau, find ich auch. Ohne jetzt groß recherchiert zu haben, denke ich es ist ein Spiel der Klasse: 2 Personen Nullsummenspiel mit vollständiger Information und daraus folgt, daß der der anfängt strategisch im Vorteil ist und normalerweise gewinnt. Dessen Gegner kann bei eigener optimaler Spielweise im allgemeinen nur maximal ein Unentschieden herauswirtschaften. Das gilt im Prinzip auch für Schach. Das aber eine Dreijährige schon so weit die Sache durchschaut, finde ich außergewöhnlich. Oder hat Papa es zu genau erklärt?
Abdul K. schrieb: > Das aber eine Dreijährige schon so weit die Sache durchschaut, finde ich > außergewöhnlich. Oder hat Papa es zu genau erklärt? anfängt und nicht verlieren A. S. schrieb: > Wenn man anfängt, soll es eine einfach Möglichkeit geben, nicht zu > verlieren. Einfach im Sinne von jeder Dreijährige kann das nach kurzer > Instruktion. Die Instruktion: A. S. schrieb: > Regel A: Setze immer auf den Gegner. > Regel B: sonst möglichst mittig.
A. S. schrieb: > A. S. schrieb: >> Regel A: Setze immer auf den Gegner. >> Regel B: sonst möglichst mittig. Ja, funktioniert aber nicht. Bei den Instruktionen gewinne man immer, indem man eine 3er Reihe baut, die in einer geraden Zeile den vierten Stein benötigt.
1 | ....... |
2 | ....... |
3 | .~o.... |
4 | ..xo... |
5 | ..oxo.. |
6 | ..xox.. |
Das ist der Startaufbau. Das mit ~ markierte Feld wird am Ende der 4. Stein sein, den der Gegner durch Zugzwang erlauben muss. Nachdem man diesen Aufbau erzeugt hat (und verhindert hat, dass er trivial gewinnt), bringt man den Gegner durch füllen der mittleren Reihe in Zugzwang und gewinnt letztendlich.
Beitrag #6754574 wurde von einem Moderator gelöscht.
avr schrieb: > bringt man den Gegner durch füllen der mittleren Reihe in Zugzwang und > gewinnt letztendlich. Spiel das Mal durch. Das wird nicht passieren. Es ist zwar möglich, dass man die Regel A (möglichst Mittig) noch erweitern muss. Glaube ich aber nicht.
A. S. schrieb: > Das wird nicht passieren. ? Ich muss doch nur zwei Mal in die Mitte werfen und ab dann kann ich immer auf den Gegner setzen. Da hilft auch keine Erweiterung der Regel A nicht. Immer drauf setzen erlaubt es, einen gewinnenden Dreier zu erzeugen.
avr schrieb: > Ich muss doch nur zwei Mal in die Mitte werfen und ab dann kann ich > immer auf den Gegner setzen. Aber dann verlierst Du doch. Nicht verlieren heißt: Der Dreijährige spielt unentschieden oder gewinnt.
Was verstehst du nicht an nicht trivial gewinnen lassen? Ich hab dir den Startaufbau gezeigt. Ab da verhinderst du, dass er gewinnt und irgendwann muss er in die 2. Spalte setzen und du gewinnst. Spiel es durch, du gewinnst jedes Mal.
avr schrieb: > Spiel es durch, du gewinnst jedes Mal. Es gibt nur 42 Steine. Zeig doch Mal eine echte Möglichkeit. Dein Vorschlag funktioniert nicht. Entweder ist mittig noch was frei oder Du verlierst vorher. Es mag Strategien geben, aber ich sehe keine.
Ist das echt so schwer nachzuvollziehen?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.