Minimax-Algorithmus Verständnis

JavaKaffee

Mitglied
Hallo Leute.

ich schreibe gerade eine Prüfungsvorleistung im Modul Programmieren an der Uni und muss dafür ein Schach-ähnliches Spiel implementieren. Das funktioniert auch schon alles, Mensch gegen Mensch, ne Art Dummy-Computer der willkürlich Züge verrichtet und nun ist es noch meine Aufgabe einen Computer zu implementieren, der mit dem Schiedsrichterprogramm meines Dozenten arbeiten kann.
Der Dummy tut das auch schon, aber ich muss noch eine Variante mit dem Minimax-Algorithmus implementieren. Und die WILL UND WILL EINFACH NICHT. Ich hab schon tausendfach mein Programm umstrukturiert um es besser zu machen, aber ich krieg immer irgendwo einen Fehler raus. Aktuell ist es ein ArrayOutOfBounds (beim ermitteln der möglichen Spielzüge) und ich ich weiß einfach nicht, wie der zustande kommt.

Allgemeines zum Programm:
Der Spieler wird sozusagen über den Schiedsrichter initialisiert und mit dem Attribut Spieler A oder B (boolean) versehen. Dann erfolgt entweder der erste Zug des Gegners (falls dieser A ist) und wird ausgeführt und anschließend der Zug meines Spielers ermittelt, lokal (eigenes Spielbrett) ausgeführt und dann zurückgegeben (oder das ganze andersrum).

Ich habe dafür eine Minimax-Methode geschrieben. Die ruft doch IMMER Max auf, sofern der Spieler, der an der Reihe ist, Spieler A ist und Min, sofern dies Spieler B ist oder? Und an der Reihe ist ja immer der, der die Methode aufruft, also brauch ich ja nur auf "meinen" Spieler zu überprüfen.
Und in der Max-Methode muss ich doch auch nur die Züge ermitteln, die für A gültig sind oder? Dann kommt die Simulation der Züge, die Überprüfung etc... auf der Min-Ebene müsste ich doch nur Züge für den Spieler B überprüfen dann und diese wieder bewerten?

Mein eigentliches Problem an der Sache ist - und ich finde den Fehler partout nicht - ich bekomme im ersten Aufruf des Minimax noch einen Zug für den jeweiligen Spieler, also SCHEINT es ja zu funktionieren. Im zweiten Durchlauf (nachdem der Gegner wieder gezogen hat) bekomme ich immer besagte Exception, da ja angeblich kein gültiger Zug ermittelt werden kann und das schon auf der ersten Ebene, quasi bei der Wurzel. Ich kann das Auszugsweise mal zur Verfügung stellen, da ja kein Kommilitone mich kopieren soll^^, auf Anfrage schick auch per PN o.ä.

NaechsterSpielzug:
Java:
...
if (this.isSpielerA()) { //Falls dies Spieler A ist
	//Spieler A ist am Zug
	setNextToA();
} else { //Fall dies Spieler B ist
	//Spieler B ist am Zug
	setNextToB();
}
//Ermittle den besten Zug für Spieler A / Spieler B
int value = this.minmax(spielerAistAmZug(), 3);
//Der Spielzug wird beim ersten Aufruf von Max/Min am Ende der Bewertungs-/Simulationsphase in einer Attributs-Variable gespeichert
...

Minimax-Methode:
Java:
public int minmax(boolean aIsNext, int resttiefe) {
	this.testBoard = this.brett.clone();
	//Ist Spieler A am Zug?
	if (aIsNext) {
		//Spieler A -> Zug mit maximalem Wert
		return this.maxWert(resttiefe, true);
	} else {
		//Spieler B -> Zug mit minimalem Wert
		return this.minWert(resttiefe, true);
	}
}

Max-Methode:
Java:
//Speichere eine Kopie des aktuellen Simulationsbrettes
//Spielbrett b = new Spielbrett(this.testBoard);
Spielbrett b = this.testBoard.clone();
Regeln r = new Regeln(this.testBoard);
//Ermittle mögliche Züge auf dem Simulationsbrett
Spielzug[] validMoves = this.getPossibleMovesForPlayer("A",r);
...
-> Simulation/Bewertung/Zugauswahl

MöglicheZüge:
Java:
public Spielzug[] getPossibleMovesForPlayer(String spieler, Regeln r) {
	ArrayList<Spielzug> zuege = new ArrayList<Spielzug>();
	for (int row = 1; row <= 8; row++) {
		for (char col = 'a'; col <= 'g'; col++) {
			for (int row2 = 1; row2 <= 8; row2++) {
				for (char col2 = 'a'; col2 <= 'g'; col2++) {
					Spielzug zug = new Spielzug(row,col, row2, col2);
					if (r.isCorrect(zug, spieler)) {
						zuege.add(zug);
					}
				}
			}
		}
	}
	return zuege.toArray(new Spielzug[0]);
}

Die Zug-Ermittlung unterscheidet sich dabei nicht wirklich von der des willkürlichen Dummies, nur dass nicht alle möglichen Züge ermittelt werden und ein zufälliger zurückgegeben wird, sondern alle Züge eines bestimmten Spielers ermittelt werden und diese dann im Array zurückgegeben werden (und nachfolgend simuliert etc.)

Über Hilfe wäre ich außerordentlich dankbar da ich mir Tage um die Ohren schlage und den eigentlichen Fehler scheinbar nicht finde.

Ich kann im Fall der Fälle auch mal das Package herschicken.

Danke schonmal!
 

Marco13

Top Contributor
Ohne alles im Detail gelesen zu haben, nur kurz drübergeschaut... muss dass statt
for (int row = 1; row <= 8; row++) {
vielleicht
for (int row = 0; row < 8; row++) {
heißen?
Ein KSKB könnte helfen, auch wenn es vermutlich besstenfalls ein GSKB wäre...
 

JavaKaffee

Mitglied
Ich hab so meine Vorbehalte grad mit dem zur Verfügung stellen, Anhänge können nur User laden oder?

Die Schleifen stimmen so, da die Spielfelder auf dem Brett auch nicht anhand des Arrays ermittelt werden, sondern über die Attribute der Felder (Zeile, Spalte) und die sind von 1 bis 8 verteilt.

Dennoch, mein Problem scheint vorrangig in der Ermittlungsmethode zu liegen, da auch unkorrekte Züge als korrekt ermittelt werden. Ich bin die Überprüfungsmethoden allesamt aber schon mehrmals durchgegangen, hab auch zwischendurch mal Dinge versucht, die eigentlich das gleiche Abfragen, aber letztlich hat sich nie was verändert.

Wer das Spiel mal sehen möchte:
Greenfoot Gallery | smess

Das ist das Spiel meines Dozenten. Die Züge müssen einmal den Richtungen entsprechen, die ein Feld vorgibt, dann darf die Figur (unten, mitte) nur ein Feld ziehen und stellt eine Art König dar (darf nicht sterben), die vordere Reihe des Spielers sind eine Art Bauern, die auch nur ein Feld weit gehen dürfen und die Figuren rechts und links vom "König" dürfen so weit gehen, wie sie können. Ein Zug ist auch dann ungültig, wenn der Weg zum Zielfeld nicht frei ist (keine eigene oder gegnerische Figur) und natürlich die standarddinge wie "Besitzrechte" (Figur von Spieler A etc.)

Ich habe eine Methode isCorrect geschrieben, die überprüft, ob: Das die Figur auf dem Startfeld (nicht leer) dem Spieler gehört, ob die Figur die berechnete Anzahl Schritte gehen darf, ob der Weg zum Zielfeld besetzt ist, ob die berechnete Richtung auf dem Startfeld verfügbar ist und ob das Zielfeld leer oder vom gegnerischen Spieler besetzt ist.

Falls gewünscht, stelle ich mal meine Regel-Klasse zur Verfügung. Diese beinhaltet nur das Spielbrett und bekommt die Züge und den Spieler übergeben, der Rest erklärt sich dort von selbst (keine komplizierten Methoden).
 

Marco13

Top Contributor
Ja, bisher ist es viel Text, mit der Message: "Mein Programm hat einen Fehler". Im Moment weiß ich nicht, was man da machen sollte. Mach Debug-Ausgaben mit System.out, und lass' es im Debugger laufen, und schau' ob du den Fehler findest....
 

JavaKaffee

Mitglied
Kann ich auch irgendwie debuggen, wenn ich den Quatsch über die Konsole starten muss? Denn das muss ich leider wegen dem blöden Schiedsrichter. Oder kann ich das auch irgendwie anders lösen? Das Spiel liegt als jar vor, meine Klassen muss ich immer als jar in einen programme-Ordner stecken um sie zu testen.

Edit: Hier die Regeln
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Alles, was von der Console gestarted wird, sollte man auch aus der IDE starten können (welche verwendest du?). Bei den Regeln kommen jetzt keine Arrayzugriffe vor. Wo kommt die Exception her? Und wo erhält die Variable, die den ArrayIndex angibt, ihren Wert? (Ja, das beantwortet die Frage, aber da es hier nicht primär um's Verständnis von MinMax geht, sondern um Debuggen von fremdem, unsichtbarem Code, wirst du nicht sooo viel Motivation erwarten können...)
 

JavaKaffee

Mitglied
Alles, was von der Console gestarted wird, sollte man auch aus der IDE starten können (welche verwendest du?).

Ich benutze Eclipse (Dank des Kurses zwangsweise, bin eher Fan von NetBeans).

Bei den Regeln kommen jetzt keine Arrayzugriffe vor. Wo kommt die Exception her? Und wo erhält die Variable, die den ArrayIndex angibt, ihren Wert?

Laut Konsolen-Fenster aus meiner Max-Methode, oberste Ebene (Aufruf mit Spieler A). Ablauf:
Ich ermittle ein Array von möglichen Zügen, dazu lege ich ein Array mit derselben Länge an und speichere bei der Simulation eines jeweiligen Zuges den Wert des Zuges an besagte Stelle. Am Ende ermittle ich den Index des ZugWertes, welcher dem höchsten ermittelten gleicht. Der Index kann jedoch nicht ermittelt werden, da keine möglichen Züge (bzw. 0) ermittelt wurden und somit kein Array erzeugt wird, in dem gesucht werden kann.


Ja, das beantwortet die Frage, aber da es hier nicht primär um's Verständnis von MinMax geht,

Ja, primär vielleicht nicht, aber (s. OpenerText) war ich nicht sicher, ob ich das Vorgehen überhaupt richtig verstanden hatte (denn dann hätte ich ja gleich den ganzen Code überarbeiten müssen).


sondern um Debuggen von fremdem, unsichtbarem Code, wirst du nicht sooo viel Motivation erwarten können...

Bin es noch nicht gewohnt, in Foren über Code zu diskutieren.^^ Aber verständlich, ich häng meine Spieler-Klasse auch mal an. (Darin nicht unbedingt alles beachten, ist teils auch Testcode enthalten, wegen der vielen Versuche, das alles zum Laufen zu bringen). Mein Brett hab ich wegen der Spielzugausführ-methode auch mal angehängt... wenn noch was wichtiges fehlt, melden.^^
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Sofern es irgendeine Klasse mit einer main() gibt, kann man in Eclipse eine entsprechende "Run Configuration" erstellen, die das ganze startet. Und darin dann auch debuggen. Sollte weitgehend automatisch gehen. Was passiert, wenn du "Run" klickst?

Inwieweit das Vorgehen richtig ist, kann ich nicht sagen (lies' dir in zwei, drei Monaten nochmal deinen Eröffnungsbeitrag durch ;) ). Grundsätzlich sah das, was ich nachvollziehen konnte, aber nicht falsch aus. (Trotzdem habe ich auch jedes mal gek***t wenn ich den MinMax- oder AlphaBeta implementiert habe, weil IMMER irgendwo ein Vorzeichen nicht stimmt ;) ).

Das Problem mit der Exception steht ja aber einer näheren Betrachtung ohnehin im Weg. Also... in der maxWert wird ja
Spielzug[] validMoves = this.getPossibleMovesForPlayer("A");
aufgerufen, und falls ich das richtig verstanden habe, hat dieser 'validMoves' dann eine Länge von 0? Ich sehe aber nicht, wo genau da eine AIOOBE auftreten soll - eigentlich kann das ja nur bei
this.nextMove = validMoves[ermittleBestenZug(zugWerte, bester)]
passieren, was keinen Sinn macht, falls KEINE Züge mehr gefunden wurden...
 

JavaKaffee

Mitglied
Sofern es irgendeine Klasse mit einer main() gibt, kann man in Eclipse eine entsprechende "Run Configuration" erstellen, die das ganze startet. Und darin dann auch debuggen. Sollte weitgehend automatisch gehen. Was passiert, wenn du "Run" klickst?

Da startet mein Mensch-vs-Mensch-Spiel, was ich zuvor implementiert hab. Die Vorlage meines Dozenten habe ich bisher nur lokal in einem Ordner liegen. Kann ich den einfach einbinden irgendwie, also die .jar-Datei in dem Ordner, so dass ich das starten kann? Also ich habe einen Ordner in dem das Spiel liegt mit der Policy und den Properties und einen Unterordner, in welchen ich die Computer legen muss. Demnach hab ich meinerseits aktuell keine Main-Methode, da ja auch das Programm meines Dozenten letztlich den Initiator bildet und meine Klassen bloß aufruft.

Das Problem mit der Exception steht ja aber einer näheren Betrachtung ohnehin im Weg. Also... in der maxWert wird ja Spielzug[] validMoves = this.getPossibleMovesForPlayer("A");
aufgerufen, und falls ich das richtig verstanden habe, hat dieser 'validMoves' dann eine Länge von 0?

Ganz genau, dass das passieren kann theoretisch, versteh ich ja auch, aber ich finde den Fehler in der Zug-Prüfung nicht, der dieses Ergebnis produziert.

Ich sehe aber nicht, wo genau da eine AIOOBE auftreten soll - eigentlich kann das ja nur bei
this.nextMove = validMoves[ermittleBestenZug(zugWerte, bester)]
passieren, was keinen Sinn macht, falls KEINE Züge mehr gefunden wurden...

Du hast Recht, das ist die Position wo es letztlich passiert. Ich würde ja verstehen, wenn ich einen Fehler in der Ermittlung des besten Zuges hätte und er vll. ne NPE wirft und an und für sich ist ja auch klar, dass er die AIOOBE wirft, weil das Array einfach keine (0) Felder hat, weil zuvor kein Zug ermittelt werden konnte. Es steht nur völlig außer Frage, dass nach grad mal 2 Zügen wohl nicht schon Ende im Gelände ist.
---
Was sich bei mir noch auftuft: Evtl. liegt es auch an der Rückgängigmachung der Züge. Ich habe mir das so gedacht, dass ich ein Spielbrett zwischenspeicher, dann simuliere und nach jedem Zug das Brett zurücksetze auf den Stand zu Anfang des Methoden-Aufrufes. In meiner Aufgabenstellung stand Pseudocode wie "moves[z].undoSimulation()", so konnte ich es aber nicht implementieren, da ich auf die Klasse keinen Zugriff habe, um evtl. Methoden nachzuimplementieren. Ehrlich gesagt fand ich es auch etwas schwierig, evtl. gekickte Figuren zwischenzuspeichern und wieder herzuholen etc., da dachte ich mir ich speicher den vorigen Brettzustand und lese ihn später wieder dort ein. Muss ich vielleicht nochmal die Regeln (das Spielbrett-Attribut) an einer Stelle anpassen oder so?

Edit: Mein aktueller "Debug" (habe mir vor Ermittlungs des nächsten Zuges alle Spielfiguren auf dem Brett und auf dem Simulationsbrett ausgeben lassen) ergibt, dass Spielfiguren sozusagen "verschwinden". Das kann eigentlich (zumindest für das Hauptbrett) nur sein, wenn sie real geschlagen werden, was nicht der Fall ist. Die einzige Option besteht darin, dass irgendwo auf dem Hauptbrett simuliert wurde o. ä. und dies ist lt. Code nicht der Fall.

Angenommen, ich speichere in das Testbrett das Hauptbrett rein, dann würde ich doch nur die Referenz speichern und somit würde bei beiden Brettern auf denselben Daten operiert werden oder? Wenn ich allerdings clone ausführe (Die ist allerdings nicht wirklich überschrieben, sondern erzeugt ein neues Brett mit den Werten des Parameters), dann müsste doch eigentlich ein neues Brett aus dem alten erzeugt werden oder nicht?

Edit2: Ich bin jetzt etwas weiter. Ich habe nun eine (ich denke) allumfassende Deep-Copy für das Spielbrett, wo wirklich jedes einzelne Feld wertgenau neu erzeugt wird aus. Das funktioniert für Spieltiefe 1 schonmal (mehr noch nicht getestet).
Komisch ist jetzt nur noch, dass ein bestimmter Spielzug nach einer gewissen Zeit immer auftritt, der sichtbar nicht korrekt ist. Die Ausgabe der Spielfiguren auf ihren aktuellen Feldern im Vorfeld zeigt aber, dass dieser Zug gar nicht auftreten dürfte, weil auf dem Startfeld gar keine Figur steht die ziehbar wäre (weder für A noch für B).
Hab übrigens grad einen kleinen Fehler auf dem Brett gefunden, mal schaun was das noch bringt xD
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Wie wird das ganze denn von der Console aus gestartet?
Man kann den Code nicht mit vertretbarem Aufwand nachvollziehen, und selbst wenn man es könnte, wäre eine AIOOBE etwas, wovon du selbst die Ursache erkennen und beheben können MUSST. Irgendwo werden da ja auch die Züge ausgegeben, die gefunden werden. Und dort solltest du (z.B. vorher das Spielbrett ausgeben), und dann schauen, ob alle erwarteten Züge auch gefunden werden, und wenn nicht, woran das liegen kann... Was soll man machen :bahnhof:
 

JavaKaffee

Mitglied
Die AIOOBE wart behoben und die inkorrekten Spielzüge auch. Ich muss nur noch die Regel implementieren, dass sich ein Zustand nicht wiederholen darf (einen Vorschlag dafür? Ich weiß noch nicht genau, wie ich diese Regel implementieren soll). Es funktioniert nun auch für tiefere Suchen. Ich weiß schon gar nicht mehr was ich verändert hab, aber es geht jetzt. Vielen Dank.

Gestartet von der Konsole wird es wenn ich in das Verzeichnis des Programms meines Dozenten gehe und seine jar mit java -jar smess.jar starte.
 
Zuletzt bearbeitet:

Marco13

Top Contributor
In der JAR müßte eine Manifest-Datei sein, wo auch die main-class drinsteht, das müßte man dann auch direkt aus Eclipse starten können... aber vielleicht ist das ja jetzt nicht mehr so akut.
 

JavaKaffee

Mitglied
Okay danke. Na ja, ich sehe das Thema jetzt als erledigt an. Für die Zustandüberprüfung hab ich noch ne halbe Lösung erzeugt (nicht ganz korrekt), aber insgesamt funktioniert der Laden sowieso erstmal, das ist top.

Vielen Dank auch für die Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Minimax Algorithmus in Tic Tac Toe Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M Minimax-Algorithmus Java Basics - Anfänger-Themen 17
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
T Veränderung eines MiniMax- Algorithmus zur Alpha-Beta-Suche Java Basics - Anfänger-Themen 3
A MiniMax- Algorithmus für 4-Gewinnt Java Basics - Anfänger-Themen 3
I Facharbeit: Tic Tac Toe mit Minimax Java Basics - Anfänger-Themen 1
H MiniMax Alogrithmus Java Basics - Anfänger-Themen 15
D minimax algprithmus Java Basics - Anfänger-Themen 5
K Algorithmus entwickeln Java Basics - Anfänger-Themen 1
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
ohneInformatik; Trockentest Algorithmus, mathematischen Zusammenhang angeben Java Basics - Anfänger-Themen 3
mervanpolat Binary Search Algorithmus ausführen Java Basics - Anfänger-Themen 1
J Rekursiver Algorithmus Java Basics - Anfänger-Themen 9
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
rosima26 Merge-Algorithmus Java Basics - Anfänger-Themen 53
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
U Den Kuchen aufteilen - aber wie? (Rebalancing-Algorithmus) Java Basics - Anfänger-Themen 14
s_1895 Pseudocode Naiver Algorithmus Java Basics - Anfänger-Themen 17
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Düsseldorf2002 Testen meines Algorithmus Java Basics - Anfänger-Themen 1
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Algorithmus java searchAll IKey Java Basics - Anfänger-Themen 4
S Algorithmus Datensätze einfügen wenn... Java Basics - Anfänger-Themen 26
KogoroMori21 MergeSort Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
fendix Compiler-Fehler Algorithmus zur Bestimmung von Primzahlen Java Basics - Anfänger-Themen 7
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
G Algorithmus Graphen Java Basics - Anfänger-Themen 10
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
U Meinung zum Dijkstra Algorithmus Java Basics - Anfänger-Themen 6
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
L Math.exp also eigenen Algorithmus Java Basics - Anfänger-Themen 2
Kirby.exe Algorithmus entwickeln Java Basics - Anfänger-Themen 37
M Algorithmus Max-Heap? Java Basics - Anfänger-Themen 3
I Labyrinth auf der Basis eines rekursiven Algorithmus Java Basics - Anfänger-Themen 27
CptK Best Practice Algorithmus nach jedem Schritt zum Visualisieren pausieren Java Basics - Anfänger-Themen 3
A Algorithmus effizienter machen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
O Labyrinth Algorithmus Java Basics - Anfänger-Themen 3
G Quicksort Algorithmus Java Basics - Anfänger-Themen 12
S Binäre-Suche Algorithmus Java Basics - Anfänger-Themen 1
D Algorithmus in Pseudocode mit log2(n) Operationen erstellen Java Basics - Anfänger-Themen 3
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
A Datenstruktur für Savings Algorithmus und Planung von kleinen Programmierprojekten Java Basics - Anfänger-Themen 1
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
S Problem mit einem rekursivem FloodFill Algorithmus Java Basics - Anfänger-Themen 62
B Algorithmus Square und Multiply Java Basics - Anfänger-Themen 3
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
D Frage Boyer-Moore Algorithmus Java Basics - Anfänger-Themen 7
M Komplexität Algorithmus Java Basics - Anfänger-Themen 8
H Zeichen im algorithmus Java Basics - Anfänger-Themen 4
B Code Verständnisfragen - FLoyd Warshall Algorithmus Java Basics - Anfänger-Themen 1
B Algorithmus zum entmischen einer Zahlenfolge Java Basics - Anfänger-Themen 15
T Algorithmus zur Überprüfung eines binären Suchbaums Java Basics - Anfänger-Themen 2
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
M Simpler Algorithmus läuft extrem langsam. Java Basics - Anfänger-Themen 3
K Erste Schritte Brute Force Algorithmus Java Basics - Anfänger-Themen 2
L Frage zu BubbleSort Algorithmus Java Basics - Anfänger-Themen 2
B gibt es ein Stundenplan-Algorithmus? Java Basics - Anfänger-Themen 11
O Algorithmus-Problem Java Basics - Anfänger-Themen 5
P Euklidischer Algorithmus Java Basics - Anfänger-Themen 9
L Greates Commong Dividend - euklidischer Algorithmus, modulos not positive Java Basics - Anfänger-Themen 5
J Euklidischer Algorithmus Java Basics - Anfänger-Themen 1
S Quicksort Algorithmus Java Basics - Anfänger-Themen 2
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
V Algorithmus in einer Methode ausführen Java Basics - Anfänger-Themen 3
M Implementierung des Knuth-Morris-Pratt-Algorithmus Java Basics - Anfänger-Themen 0
M Dijkstras Algorithmus Java Basics - Anfänger-Themen 5
S Zusammenhang Datenstruktur/Algorithmus Java Basics - Anfänger-Themen 1
M Simulation - Algorithmus Java Basics - Anfänger-Themen 3
F Erste Schritte Hilfe beim Algorithmus finden Java Basics - Anfänger-Themen 8
D Algorithmus für Punkte auf einem Kreis Java Basics - Anfänger-Themen 0
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
C Ideen für einen Algorithmus Java Basics - Anfänger-Themen 1
F Best Practice Algorithmus optimieren - Binaeruhr Java Basics - Anfänger-Themen 2
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
L Welcher Algorithmus ist das ? Java Basics - Anfänger-Themen 9
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
O Java Zufalls-Verteil-Algorithmus Java Basics - Anfänger-Themen 3
P ganz simpler algorithmus Java Basics - Anfänger-Themen 3
C Sortieren ohne Algorithmus Java Basics - Anfänger-Themen 8
J Algorithmus: Grad von floating zu Grad/Minute/Sekunde Java Basics - Anfänger-Themen 3
A Text Verschriebung/Algorithmus(?) Java Basics - Anfänger-Themen 8
R Rekursionsformel für Laufzeit von Algorithmus Java Basics - Anfänger-Themen 3
E Algorithmus für kart. Produkt: als int [] Feld repräsentiert Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben