computerGuesses macht mir Unsinn.

Antworten
Blurio
Beiträge: 56
Registriert: Do 20. Nov 2008, 21:39

computerGuesses macht mir Unsinn.

Beitrag 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.
Zuletzt geändert von Blurio am Sa 28. Mär 2009, 18:03, insgesamt 1-mal geändert.
Nidan
Beiträge: 10
Registriert: Do 25. Dez 2008, 19:45

Re: computerGuesses macht mir Unsinn.

Beitrag 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.
Benutzeravatar
DaVinci
Beiträge: 62
Registriert: Mi 5. Nov 2008, 01:20

Re: computerGuesses macht mir Unsinn.

Beitrag 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.
¿ɯıɥ ssɐɹɹɐqɯǝ ʎɥʍ 'ʇou s,ʇı ɟı — noʎ llǝʇ ll,ǝɥ 'ɔɐɯ ɐ s,ʇı ɟı — sǝsn ǝɥ so ʇɐɥʍ uɐɯ ɐ ʞsɐ ɹǝʌǝu
debfx
Beiträge: 2
Registriert: So 2. Nov 2008, 20:26

Re: computerGuesses macht mir Unsinn.

Beitrag von debfx »

Oder einfach Iterator verwenden.
Blurio
Beiträge: 56
Registriert: Do 20. Nov 2008, 21:39

Re: computerGuesses macht mir Unsinn.

Beitrag 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.
Blurio
Beiträge: 56
Registriert: Do 20. Nov 2008, 21:39

Re: computerGuesses macht mir Unsinn.

Beitrag 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.
max-s
Beiträge: 2
Registriert: So 2. Nov 2008, 18:17

Re: computerGuesses macht mir Unsinn.

Beitrag 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--)
Antworten

Zurück zu „Allgemein“