Как сделать перебор всех вариантов?
Всем привет! Как сделать перебор всех возможных вариантов из определенных символов (10-ти букв, например), чтобы они не повторялись на js или php? Заранее спасибо!
|
Точно так же как и перебор чисел только основанием у тебя будет не 10 знаков а «определенный набор символов»
|
А как потом (или сразу в этой программе) убрать варианты с повторяющимися символами?
|
В php есть http://php.net//manual/ru/function.array-unique.php.
В js будет что то в духе
Array.prototype.unique = function() {
var unique = [];
for (var i = 0; i < this.length; i++) {
if (unique.indexOf(this[i]) == -1) {
unique.push(this[i]);
}
}
return unique;
};
|
Спасибо огромное! То что надо!
|
можно использовать простой цикл по числам
преобразовывая функцией .toString(основание системы) http://learn.javascript.ru/number#to...исления а потом заменяя цифры на символы
var x = ['a', 'b'],
len = x.length,
arr,
s,
sItog = '';
for (var i = 0;; i += 1) {
s = i.toString(len);
if (s.length > len) {
break;
}
if (s.length < len) {
s = ('00000000000000' + s).slice(-len); // дополним слева нулями
}
arr = s.split('').map(function (v) {
return x[v];
});
sItog += arr.join('') + ' ';
}
alert(sItog);
сделаем массив из 3 символов
var x = ['a', 'b', 'c'],
len = x.length,
arr,
s,
sItog = '';
for (var i = 0;; i += 1) {
s = i.toString(len);
if (s.length > len) {
break;
}
if (s.length < len) {
s = ('00000000000000' + s).slice(-len); // дополним слева нулями
}
arr = s.split('').map(function (v) {
return x[v];
});
sItog += arr.join('') + ' ';
}
alert(sItog);
|
| Часовой пояс GMT +3, время: 09:05. |