Mo Logo [Home] [Lexikon] [Aufgaben] [Tests] [Kurse] [Begleitmaterial] [Hinweise] [Mitwirkende] [Publikationen]

Mathematik-Online-Aufgabensammlung: Lösung zu

Aufgabe 1645: Mastermind


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Implementieren Sie in MATLAB das Spiel ,,Mastermind``. Dabei wird zufällig eine Folge von $ 5$ 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 $ 4$ Farben und $ 2$ 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

[Aufgabe]

  automatisch erstellt am 30.  3. 2010