Seite 1 von 1

computerGuesses macht mir Unsinn.

Verfasst: Fr 27. Mär 2009, 21:49
von Blurio
Folgendes:
mastermind> start
machine guess: 0 0 0 0
evaluation> 0 0
machine guess: 0 0 0 0
evaluation> 0 0
machine guess: 0 0 0 0
evaluation> 0 0
machine guess: 0 0 0 0
evaluation> 0 0
machine guess: 0 0 0 0
evaluation>

ich wandel die evaluation in n B&W Objekt um und übergeb das processEvaluation. Das sieht so aus:

Code: Alles auswählen

public void processEvaluation(BlackAndWhite bw) {
		LinkedList<Integer> delete = new LinkedList<Integer>();
		for (int i = 0; i < list.size(); i++) {
			ColorCode temp = list.get(i);
			if ((getBlacks(nextGuess(), temp) != bw.getBlacks())
					|| (getWhites(nextGuess(), temp) != bw.getWhites())){
				delete.add(i);
			}
		}
		for(int i = delete.size()-1; i == 0; i--){
			int del = delete.get(i);
			list.remove(del);
		}
	}
getBlacks und getWhites macht genau das, was es sagt, es gibt einem den Anteil der weißen und Schwarzen Stifte aus.
Ich hab das so, dass ihc ne Liste erzeug, in der ich die Indizes, der zu löschenden objekte speicher und die dannach lösch. Hier liegt das problem, es wird nie gelöscht.

Edit: Mittlerweile hab ichs soweit ändern können, dass er die zu löschenden objekte korrekt speichert aber nicht löschen kann.

Re: computerGuesses macht mir Unsinn.

Verfasst: Sa 28. Mär 2009, 00:59
von Nidan
wenn du einen Eintrag aus der Liste löscht, rutschen die Einträge dahinter eins nach vorne.

Soll heißen: Du versuchst am Ende ein Element zu löschen, das es nicht (mehr) gibt.

Re: computerGuesses macht mir Unsinn.

Verfasst: Sa 28. Mär 2009, 01:15
von DaVinci
Nidan hat geschrieben:wenn du einen Eintrag aus der Liste löscht, rutschen die Einträge dahinter eins nach vorne.

Soll heißen: Du versuchst am Ende ein Element zu löschen, das es nicht (mehr) gibt.
Einfachste Lösung: Rückwärts iterieren.

Re: computerGuesses macht mir Unsinn.

Verfasst: Sa 28. Mär 2009, 02:49
von debfx
Oder einfach Iterator verwenden.

Re: computerGuesses macht mir Unsinn.

Verfasst: Sa 28. Mär 2009, 12:37
von Blurio
Hm okay danke. Ich hab mir jetzt mal meine delete liste ausgegeben. bei 0000 und b0w0 hat sie 1215 elemente. Das is irgendwie komisch.

Re: computerGuesses macht mir Unsinn.

Verfasst: Sa 28. Mär 2009, 18:03
von Blurio
Updates im Code, ich weiß mittlerweile, dass in der delete liste die korrekten indizes gespeichert sind, nur wird nichts -NICHTS- gelöscht, keine ahnung warum.

Re: computerGuesses macht mir Unsinn.

Verfasst: Sa 28. Mär 2009, 23:21
von max-s

Code: Alles auswählen

for(int i = delete.size()-1; i == 0; i--) -> for(int i = delete.size()-1; i >= 0; i--)