Cześć,
jak w tytule napisałem, zastanawiam się jak zaimplementować taki ficzer:
losujemy nazwisko z tablicy i jeśli kończy się ono na znak x, a wylosowany przyrostek zaczyna się na znak y, który nie pasuje i spełnia się warunek, to losujemy od nowa, ALE bez możliwości wylosowania poprzedniego przyrostka. O to kod:
void NGen::pickName() {
if (sex == MALE) {
chosenName = _Bnames[randomNameNumber]; //wybranie imienia
chosenSurname = surnames[randomSurnameNumber] + surname_suffixes[random_SurSuff_Number]; //wybranie nazwiska i dodanie przyrostka
if (chosenSurname.find_last_of('m') && random_SurSuff_Number == 12 || random_SurSuff_Number == 16) { //jeżeli ostatni znak jest 'm' i przyrostek o indeksie 12 || 16
random_SurSuff_Number = random<int>(0, surname_suffixes.size()); //losuj na nowo
chosenSurname = surnames[randomSurnameNumber] + surname_suffixes[random_SurSuff_Number]; //twórz nowe nazwisko, ale cały czas z tej samej puli >:(
}
else if (chosenSurname.find_last_of('t') && random_SurSuff_Number == 9) { //w przypadku gdy inny znak itp...
random_SurSuff_Number = random<int>(0, surname_suffixes.size());
chosenSurname = surnames[randomSurnameNumber] + surname_suffixes[random_SurSuff_Number]; // to samo co wyżej
}
}
}
No i właśnie się zastanawiam jak to napisać, aby nie było przypadku, że wylosuje mi ten sam przyrostek.. help :D
porady odnośnie tego spaghetti mile widziane. Jestem świadom, że ten crap nadaje się tylko do refactoringu :P
pozdro