Функция Javascript для генерации списка всех возможных слов, которые соответствуют гласному и согласному шаблону
Я пытаюсь создать функцию, которая будет генерировать массив всех возможных комбинаций букв, которые соответствуют шаблону гласных и согласных.
Например, учитывая строку "VCV", где V = гласный и C = согласный, я хочу получить список всех возможных комбинаций букв, которые соответствуют этому шаблону.
['ABA', 'ABE', 'ABI', 'ABO', 'ABU', 'ACA', 'ACE',....]
Есть идеи?
1 ответ
Если вы хотите просто наивно комбинировать буквы, это одно. Однако вы, похоже, подразумеваете, что хотите генерировать правильные слова, это совсем другая задача.
Основные шаги будут включать:
Выбор источника для слов, которые вы хотели бы извлечь из
Пометка всех этих слов для гласных и согласных
Написание способа получить к ним доступ / запросить их
Я думаю, что выполнение всей этой клиентской части в браузере было бы плохой идеей, учитывая, что словарь любого размера потребует меньше, чем незначительное количество ресурсов. Я бы порекомендовал вашему JS отправить запрос на сервер, который обслуживает этот запрос, а затем отправить обратно результаты с чем-то вроде AJAX.
Тогда есть много вещей, которые вы могли бы сделать на стороне сервера, хотя я лично использовал NLTK для языковых задач с большим успехом, это может быть местом для начала.
РЕДАКТИРОВАТЬ
Вы сделали свой вопрос более понятным. Предполагая, что у вас есть множество гласных, vowels
и согласные, consonants
Может быть, что-то вроде этого:
var results = []
function getResult(refString, currentString){
if(currentString === undefined){
currentString = "";
}
if(refString.length === 0){
return currentString;
}else {
if(refString[0] === 'C'){
for(var i in consonants){
results.push(getResult(refString.slice(1),currentString + consonants[i]));
}
} else if (refString[0] === 'V'){
for(var i in vowels){
results.push(getResult(refString.slice(1),currentString + vowels[i]));
}
}
}
}