Potrzebuje funkcję, która dzieli słowo na sylaby i sprawdza, czy słowa się rymują. Znacie może jakiś algorytm, który pozwoli mi na podzielenia słowa na sylaby? Najlepiej jakby współpracował z językiem polskim, bo taki jest mój cel. Znalazłem coś takiego http://stackoverflow.com/questions/405161/detecting-syllables-in-a-word ale nic z tego nie rozumiem. :/
@edit
Oczywiście, jak to ja, nie przejrzałem dobrze tej strony, a jest tam super dobry algorytm do angielskich słów, jednak kiedy nie używamy polskich znaków, to z polskim też daje radę. Nie wiem tylko jak zmusić ten algorytm, aby wypluwał mi listę tych sylab, ale jak ktoś wie, to miło gdyby mi napisał. :)
int countSyllables(string word) {
vector<char> vowels = { 'a', 'e', 'i', 'o', 'u', 'y' };
string currentWord = word;
int numVowels = 0;
bool lastWasVowel = false;
for(auto wc : currentWord)
{
bool foundVowel = false;
for(auto v : vowels)
{
//don't count diphthongs
if (v == wc && lastWasVowel)
{
foundVowel = true;
lastWasVowel = true;
break;
}
else if (v == wc && !lastWasVowel)
{
numVowels++;
foundVowel = true;
lastWasVowel = true;
break;
}
}
//if full cycle and no vowel found, set lastWasVowel to false;
if (!foundVowel)
lastWasVowel = false;
}
//remove es, it's _usually? silent
if (currentWord.length() > 2 && currentWord.substr(currentWord.length() - 2) == "es") numVowels--;
// remove silent e
else if (currentWord.length() > 1 && currentWord.substr(currentWord.length() - 1) == "e") numVowels--;
return numVowels;
}