AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Mastermind mit Bildern - Check-Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Mastermind mit Bildern - Check-Problem

Ein Thema von Tolex · begonnen am 29. Jun 2007 · letzter Beitrag vom 29. Jun 2007
 
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, 22: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz