Реализации алгоритмов/Алгоритм Нарайаны: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 979:
} { }
}
</syntaxhighlight>
 
==[[w:TypeScript|TypeScript]]==
<syntaxhighlight lang="typescript">
// narayana.ts
//создаем начальную структуру (при n=5 => "01234")
const getStartPatternString = (n: number): string => {
if (n < 1) return "";
let startPatternString = '';
let i = 0;
while (i < n) {
startPatternString += i;
i++;
}
return startPatternString;
}
 
//Выводит в массиве все варианты возможных перестановок для начальной структуры "0123...n"
function narayana(n: number): string[] {
let b = getStartPatternString(n);
let a = b.split("").reverse().join("");
let res = [a];
while (a != b) {
let i = 1;
while (a[i] > a[i - 1]) {
i++;
}
let j = 0;
while (a[j] < a[i]) {
++j;
}
let temp = a.split("");
let c = temp[j];
temp[j] = temp[i];
temp[i] = c;
a = temp.join("");
let x = a.slice(0, i).split("").reverse().join("");
let y = a.slice(i);
a = x + y;
res.push(a)
}
return res; // .sort() - можно добавить для упорядочивания вывода
}
 
</syntaxhighlight>
{{BookCat}}