WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Nim-Spiel Problem

 

ledun
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 08.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2010, 21:54     Titel: Nim-Spiel Problem
  Antworten mit Zitat      
Hallo!

Also folgendes erstmal:

Beim Nim-Spiel mit mehreren Haufen nehmen beide Spieler (Mensch und Computer) abwechselnd beliebig viele Steine von einem beliebigem Haufen. Die Anzahl der Steine pro Haufen am Anfang ist auch beliebig. Gewonnen hat derjenige Spieler, der die letzten Spielsteine genommen hat.

Ich komm erstmal bis zu folgendem Punkt:
Die Zahlen der Haufen werden zeilenweise in Binärdarstellung aufgeschrieben. Zum Beispiel: Es gibt 4 Haufen mit jeweils 1, 3, 5 und 6 Steinen.
Die zeilenweise Binärdarstellung bekomm ich hin dann habe ich folgende Matrix (1. Zeile = 1. Haufen):

001
011
101
110

Der Computer ist dann in einer Gewinnstellung, wenn die Summe mindestens einer Spalte ungerade ist. Diese Gewinnstellung will er logischerweise nicht verlieren und das einzige was er zum sicheren Sieg machen kann ist so viele Steine eines Haufens wegnehmen, so dass die neue Matrix nur gerade Summen pro Spalte enthält.

Also richtig wäre jetzt z.b. 1 Stein aus Haufen 1 zu entfernen, dann wären in den Haufen jeweils 0, 3, 5 und 6 was zu der matrix

000
011
101
110

Jetzt sind alle Spalten gerade.

So und mein Problem liegt jetzt z.b. hier:

Es sind zum Beispiel 3 Haufen mit jeweils 1,4 und 6 Steinen was zu einer Matrix der Form:

001
100
110

Jetzt wäre der Computer, wäre er am Zug, wieder in einer Gewinnstellung.
Man sieht 1 Stein aus Haufen 1 zu entfernen /mehr sind dort ja nicht übrig) bringt nichts. Beliebig viele Steine (maximal 4) aus Haufen 2 auch nicht. Nur Haufen 3 kommt hier in Frage und zwar müsste er hier 1 stein entfernen. So wären danach jeweils in den Haufen 1,4 und 5 Steine was zu

001
100
101

führt und nun sind wieder alle Spalten gerade.

Wie kann ich das nur ausdrücken, dass der Computer jetzt so viele Steine von einem Haufen nimmt, sodass die Spalten der resultierenden Matrix in der Summe gerade sind - ohne dass ich mit wahnsinnig vielen Schleifen, alle Varianten durchgehen muss beliebig viele Steine von einem beliebigen Haufen zu entnehmen. Hat da jemand eine Idee? mfg
Private Nachricht senden Benutzer-Profile anzeigen


Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2010, 06:51     Titel:
  Antworten mit Zitat      
So sollte es funktionieren

Code:

% Ausgangssituation
haufen = [1 3 5 6];

M = ones(length(haufen),6);

% Umwandlung in Binärdarstellung
for k = 1:length(haufen)
    M(k,:) = dec2binvec(haufen(k),6);
end

% Summation der Spalten und auffinden der richtigen Spalte (= Anzahl der
% Steine)
spalte = find(mod(sum(M,1),2),1,'first');

% Umrechnen in Anzahl der Steine
steine = 2^(spalte-1);

% Auffinden der Zeile
zeile = find(M(:,spalte));


display(['In einen von den Zeilen ',num2str(zeile'),' , ',num2str(steine),' Stein(e) nehmen']);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.