Implementieren Sie in MATLAB das Spiel
,,Mastermind``.
Dabei wird zufällig eine Folge von Farben
aus der Menge {Rot, Grün, Blau} gewählt.
Der Spieler versucht die Konfiguration zu raten,
wobei er jeweils die Information erhält, wieviele
Farben und wieviele Positionen richtig sind.
Rät er beispielsweise die Folge RRGBG als
RGGGB, so sind Farben und Positionen richtig.
function MasterMind2(n)
A = fix(3*rand(1,n)); % Erzeugen eines Zufallsvektors
B = hist(A,[0:2]); % Anzahl für die einzelnen Farben
As=zeros(0,n+2); % Initialisierung der Rateversuche
% Rateversuche abfragen
while 1
% Laenge der Abfrage ist n
satz=sprintf('%d-stellige Zeichenkette aus den Buchstaben {R,G,B}:',n);
str=input(satz);
% Buchstaben in Ziffern wandeln
Ai(find(str=='R'))=0; Ai(find(str=='G'))=1; Ai(find(str=='B'))=2;
Bi = hist(Ai,[0:2]); % Anzahl für die einzelnen Farben
p = sum((A-Ai)==0); % Direkter Vergleich
z = sum(min([B; Bi])); % Zifferanzahl-Vergleich
As = [As; str, p, z]; % Ergaenzung der Matrix
% Ausgabe: erster Teil als Buchstaben, zweiter Teil als Zahlen
fprintf([repmat('%c ',1,n),' %d %d\n'],As');
if p == n; return; end % Abbruch wenn richtig geraten
end
|
automatisch erstellt
am 30. 3. 2010 |