są na żółto ponieważ spełniają warunek który podałeś "literę na żółto - jeżeli jest ona w słowie, ale na innym miejscu oraz zieloną literę jeżeli jest ona na dobrym miejscu." - prawdopodobnie, bez kodu ciężko stwierdzić
jeżeli jest tak jak pisze to dodaj if-a która sprawdza czy już wszystkie 'b' są już odgadnięte żeby nie malował innych.
Właśnie tak chciałem do tego podejść, ale chyba sam się pogubiłem jak zrobić sprawdzanie czy już wszystkie b są odgadnięte, ponieważ słowa do zgadnięcia będą różne, więc też i będą inne ilości powtórzeń
-
GreenCount=0
- Tworzysz histogram liter w słowie
oryginal
, oraz histogram liter w słowie given
- Dla każdej pozycji w słowach
oryginal
i given
jeżeli mamy taką samą literę to zmniejszamy odpowiednie pozycje w histogramach oraz ++GreenCount
-
YellowCount=Sum(Min(hist_oryginal[i],hist_given[i])
... Proste jak drut lub jak mawiają rosjanie - Просто как два пальца об асфальт
A jak w takim przypadku później odnieść się do mojego słowa żeby wiedzieć dokładnie które litery pokolorować na żółto? Nie za bardzo wiem jak sam licznik ma mi pomóc.
Może kawałek mojego kodu pomoże. Tutaj jest samo liczenie koloru "g" jako green, 'y' jako żółty i 'n' jako brak koloru.
guessFromPlayer - pobiera ostatnie wpisane słowo przez gracza
secretWord - hasło do odgadnięcia
String guessFromPlayer = listOfAttempts.get(listOfAttempts.size() - 1);
String secretWord = this.secretWord;
String[] guessWordInTab = guessFromPlayer.split("");
String[] secretWordInTab = secretWord.split("");
String[] coloredWordlePassword = new String[secretWordInTab.length];
for (int i = 0; i < secretWordInTab.length; i++) {
for (int j =0;j < secretWordInTab.length; j++) {
if (guessWordInTab[i].equals(secretWordInTab[j]) && i == j) {
coloredWordlePassword[i] = "G";
break;
} else if (guessWordInTab[i].equals(secretWordInTab[j]) && i != j) {
coloredWordlePassword[i] = "Y";
continue;
} else {
coloredWordlePassword[i] = "N";
}
}
}
printColoredWord(coloredWordlePassword, guessWordInTab);
}