tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von HonniCilest
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
813
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    bauernsk1ll bauernsk1ll ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    5
    Hi,
    ich suche für mein Mastermindspiel ein paar Lösungsalgorithmen, sprich der NPC soll den von mir vorgegebenen Farbcode ermitteln.
    Durch das stöbern in Wikipedia bin ich auf 2 Algorithmen gestoßen:
    - Six-guess algorithm
    - Five-guess algorithm
    Da ich durch googlen keinen Javacode gefunden habe frage ich hier nach. Wenn keiner einen Javacode hat, würde mir auch eine umsetzbare Beschreibung genügen.

    Danke im Vorraus
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.490
    Hi und Willkommen bei tutorials.de

    Die Beschreibung steht doch dort?
    Bei welchem Punkt/welchen Punkten hast du Probleme?

    Hast du einen eigenen Codeversuch?
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    bauernsk1ll bauernsk1ll ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    5
    Dankeschön

    Es steht zwar da, allerdings hab ich keine ahnung wie ich sowas in java realisieren soll. Hättest du evtl einen Ansatz, an dem ich mich orientieren kann?
     

  4. #4
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    500
    Für einen Computer-Gegner würde ich auf jeden Fall den Six-Guess Algorithm nehmen, ich denke niemand mag es, wenn der eigene Code immer so früh erraten werden würde

    Ein Hinweis von mir vorab, ich würde Abstand davon nehmen einen Buchstaben bei der Erklärung einer festen Farbe zuzuordnen, also musst du auf jeden Fall in jeder Runde die Zuordnung immer neu festlegen. Da Fallen mir Stichworte wie Random oder Shuffle ein.

    Dann generierst du die Liste, kategoriesortiert, innerhalb der Kategorie alphabetisch sortiert. Ich würde dazu 4 einzelne ArrayLists für die Kategorien und eine für die verbleibenden Lösungen wählen. Letztere baust du zusammen mit addAll() und kannst du später mit remove() bzw. removeAll() kürzen.

    Dann nimmst du abcd. In folgenden 3 Fällen kannst du die Liste so stark kürzen, dass du mit dieser weiterabreiten kannst:
    a) Alle schwarz --> Gewonnen
    b) Alle schwarz/weiß oder weiß -->
    - Kategorie 2, 3 und 4 werden entfernt
    - alle Lösungen aus Kategorie 1 mit e oder f werden entfernt
    - weiter mit dem ersten Eintrag der verbleibenden Liste welcher nach den Farbangaben möglich ist
    c) Alle Leer -->
    - Kategorie 1 wird entfernt
    - alle Lösungen aus Kategorie 2, 3 und 4 werden entfernt, welche andere Buchstaben enthalten als e und f
    - weiter mit dem ersten Eintrag der verbleibenden Liste welcher nach den Farbangaben möglich ist
    d) mixed -->
    - weiter mit bcde

    Bei dem Punkt "weiter mit dem ersten Eintrag der verbleibenden Liste welcher nach den Farbangaben möglich ist" kann man sich sicher streiten, ob man alle nicht mehr möglichen Einzelnen Lösungen löscht und dann den ersten Eintrag nimmt, oder diese erstmal alle drin lässt und eben immer nur die Lösung überprüft, welche man gerade einfügen möchte. Aber ich denke die genannte Variante ist weitaus performanter.
    Der Vorgang weiderholt sich insgesamt 4 mal, falls bei den ersten 3 Fälllen d auftreten sollte. Beim vierten Mal gibt es dann eine Fallunterscheidung anhand der ersten möglichen Lösung.

    Näheres ist sicher in deinem guide beschrieben.

    Hoffe es konnte dir eine Orientierung bieten.
    bauernsk1ll bedankt sich. 
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  5. #5
    bauernsk1ll bauernsk1ll ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    5
    Vielen Dank für deinen Post honni. Ich werde es mal mit deiner Anleitung probieren und schauen wie weit ich komme.
     

Ähnliche Themen

  1. Mastermind mit Zahlen
    Von Borsti1982 im Forum Java
    Antworten: 11
    Letzter Beitrag: 11.01.11, 09:06
  2. Mastermind
    Von tittli im Forum Java Grundlagen
    Antworten: 11
    Letzter Beitrag: 28.10.08, 08:45
  3. Game: MasterMind unter die Lupe nehmen / testen :-)
    Von Kryptaesthesie im Forum Java
    Antworten: 0
    Letzter Beitrag: 17.08.07, 14:31
  4. Mastermind Treffer abfrage (Ich bin am Verzweifeln)
    Von desperade im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 7
    Letzter Beitrag: 06.07.07, 13:17
  5. Antworten: 2
    Letzter Beitrag: 27.03.07, 15:14