Я хочу создать метод, который принимает два списка строк, представляющих звуки (фонемы и гласные) двух слов в качестве параметров. Функция этого метода состоит в том, чтобы определить, являются ли слова рифмованными на основе двух звуков.
Определение рифмы: слова рифмуются, если последний гласный (включительно) и после совпадают. Слова будут рифмоваться, даже если последние гласные звуки имеют разное ударение. Только уровни гласности будут иметь уровни напряжения (числа)
Пока что мой подход состоит в том, чтобы перевернуть список так, чтобы звуки были в обратном порядке, а затем добавить все от начала строки до Первый гласный (включительно). Затем сравните два списка, чтобы увидеть, равны ли они. Пожалуйста, используйте базовый код c, я только на начальном уровне scala. Только что закончил выполнение программы обучения.
Пример 1: два слова GEE и NEE рифмуются, потому что звук GEE («JH», «IY1») становится («IY1», «JH») и звук NEE («N») , «IY1) становится (« IY1 »,« N »), так как они имеют одинаковую гласную, все остальное после не должно рассматриваться больше.
Пример 2: два слова GEE и JEEP не будут рифмоваться, поскольку звук GEE («JH», «IY1») становится («IY1», «JH») и звук JEEP («JH», «IY1», «P») становится («P», «IY1», «JH»), поскольку первый звук в GEE - это гласный звук, который сравнивается с «P» и «IY1» в JEEP.
Пример 3: два слова HALF и GRAPH будут рифмоваться, потому что HALF звук («HH», «AE1», «F») становится («F», «AE1», «HH») и звук GRAPH («G», «R», «AE2» ”,” F ”) становятся (“ F ”,“ AE2 ”,“ R ”,“ G ”) в этом случае, хотя первый гласный имеет различное ударение (числа), мы игнорируем это напряжение, поскольку гласные одинаковы.
def isRhymeSounds(soundList1: List[String], soundList2: List[String]): Boolean={
val revSound1 = soundList1.reverse
val revSound2 = soundList2.reverse
var revSoundList1:List[String] = List()
var revSoundList2:List[String] = List()
for(sound1 <- revSound1) {
if(sound1.length >= 3) {
val editVowel1 = sound1.substring(0,2)
revSoundList1 = revSoundList1 :+ editVowel1
}
else {
revSoundList1 = revSoundList1 :+ sound1
}
}
for(sound2 <- revSound2) {
if(sound2.length >= 3) {
val editVowel2 = sound2.substring(0, 2)
revSoundList2 = revSoundList2 :+ editVowel2
}
else {
revSoundList2 = revSoundList2 :+ sound2
}
}
if(revSoundList1 == revSoundList2){
true
}
else{
false
}
}