Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Mastermind mit Bildern - Check-Problem

  Alt 29. Jun 2007, 23:22
Mit Delphi kann man für so ein einfaches Problem ja fast schon reinen Pseudocode schreiben.

Delphi-Quellcode:
uses Math; //für die Min-Funktion

type
  TCode = (Code1,Code2,Code3,Code4); //die zu setzenden farben

  TLock = array[0..3] of TCode; //eine gesetzte Farbenfolge

implementation

function CorrectCodes(Lock, Guess: TLock): Integer;

  // ermittelt, wie oft eine farbe gesetzt wurde
  function NumberOfCodes(ACode: TCode; ALock: TLock): Integer;
  var i: Integer;
  begin
    Result := 0;
    for i := 0 to high(ALock) do
      if ALock[i] = ACode then
        Inc(Result);
  end;


var
  Code: TCode;
begin
  Result := 0;

  for Code := low(TCode) to high(TCode) do //Ich hoff das funktioniert... Ansonsten gehört das ganze n paar mal auf Integer gecastet.
  begin
    Inc(Result, Min(NumberOfCodes(Lock),NumberOfCodes(Guess)); //Die Anzahl der richtigen Farben wird um höchstens die Anzahl der gesetzten Farben und höchstens die tatsächliche Anzahl vorhandener Farben erhöht. D.h., setze ich zweimal rot, es kommt aber nur eineml rot vor, heißt das, man hat nur einmal richtig geraten. Gleiches, wenn einmal rot gesetzt wird, rot aber tweimal vorkommt.
  end;
end;

function CorrectlyPlacedCodes(Lock, Guess: TLock): Integer;
var i: Integer;
begin
  //Das ist einfach. Nur komplett durchgehen und schauen, ob geratene Farbe mit vorliegender Farbe übereinstimmt.

  Result := 0;
  for i := 0 to high(Lock) do
    if Lock[i] = Guess[i] then
      Inc(Result);
end;
Wenn ich die Mastermind-Regeln noch richtig im Kopf hab, ist dieses beispiel total oversized. Aber es sollte funktionieren.

...und ich denke, ohne es komplett zu verstehen, kann man es auch nicht in eine bestehende Lösung integrieren.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat