2017-01-05 3 views
-2

У меня есть следующая проблема. У меня есть несколько слов (скажем, 3): word1 word2 word3, все они разделены пробелами, и я хочу сгенерировать все комбинации (3!, Что означает 6), как word1 word2 word3 ... word2 word1 word3. .. слово2 слово3 слово1 ... слово3 слово2 слово1 ... слово3 слово1 слово2 ... слово1 слово3 слово2 ... Можете ли вы помочь мне с общим кодом, который работает для любого количества слов?JavaScript генерирует всю комбинацию

+0

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

+0

ничего, что проблема, которую я не знать с чего начать –

+1

http://stackoverflow.com/questions/39927452/recursively-print-all-permutations-of-a-string-javascript –

ответ

0

Вы можете использовать одно из решений, предоставляемое для "Permutations in JavaScript?". Вам просто нужно разделить строку на слова и вставить слова в строку для каждой перестановки.

ES6 демо:

function* permute(permutation) { 
 
    var length = permutation.length, 
 
     c = Array(length).fill(0), 
 
     i = 1; 
 

 
    yield permutation; 
 
    while (i < length) { 
 
    if (c[i] < i) { 
 
     var k = i % 2 && c[i]; 
 
     [permutation[i], permutation[k]] = [permutation[k], permutation[i]]; 
 
     ++c[i]; 
 
     i = 1; 
 
     yield permutation; 
 
    } else { 
 
     c[i++] = 0; 
 
    } 
 
    } 
 
} 
 

 
// sample input: 
 
var s = 'this is a test'; 
 

 
for (var words of permute(s.split(/\s+/))) { 
 
    console.log(words.join(' ')); 
 
}
.as-console-wrapper { max-height: 100% !important; top: 0; }

Смежные вопросы