В моем домашнем задании мне проверяется все возможные циклические обозначения от введенных пользователем номеров. У меня есть вход, отправленный в массив, но я не уверен, как начать цикл. Как я могу отредактировать этот цикл, чтобы не отображать одни и те же номера более одного раза? Извините, если это неправильный формат, первая публикация.Создание цикла для проверки циклов в перестановке
// example of user input
var permutation = [ 9,2,3,7,4,1,8,6,5 ] ;
// add zero to match index with numbers
permutation.unshift(0) ;
// loop to check for all possible permutations
for (var i = 1; i < permutation.length -1; i++)
{
var cycle = [];
var currentIndex = i ;
if (permutation [ currentIndex ] == i)
cycle.push(permutation [currentIndex]);
while (permutation [ currentIndex ] !== i)
{
cycle.push(permutation [currentIndex]);
currentIndex = permutation [ currentIndex ] ;
}
// display in console
console.log(cycle);
}
Что вы ожидаемый результат для примера ввода? Было бы «[1, 9, 5, 4, 7, 8, 6] [2] [3]»? Если это так, вы можете отслеживать «посещенные» номера с помощью набора или массива логических значений для каждого индекса при повторном тестировании. –