Функция 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]));
            }
        }
    }
}
Другие вопросы по тегам