как найти список всех слов из заданного массива символов - PullRequest
3 голосов
/ 06 апреля 2019

Я пытаюсь разгадать загадку из 5 алфавитов, в которой могут быть слова из 3, 4 и 5 букв.Как мне написать свой алгоритм, чтобы это произошло?

Я попытался сделать 5 вложенных циклов, чтобы пройти через символы массива, а затем добавить все циклы, он работает для маленьких слов, но вылетает из-за сложности времени.

const addandlog = (array) => {
  for (var i = 0; i < array.length; i++) {
    for (var j = 0; j < array.length; j++) {
      for (var k = 0; i < array.length; k++) {

        console.log(array[i] + array[j] + array[k]);

      }
    }
  }
}
addandlog(['A', 'G', 'R', 'N', 'D']);

Я ожидаю, что на выходе будут все слова, которые можно сделать, а не только слова словаря

1 Ответ

2 голосов
/ 06 апреля 2019

Вы можете использовать итеративный подход, взяв массив массивов с требуемыми элементами.

function getWords(letters, length) {
    return Array
        .from({ length })
        .fill(letters)
        .reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => [].concat(v, w))), []))
        .map(a => a.join(''))
}

console.log(getWords(['A', 'G', 'R', 'N', 'D'], 5));
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...