Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать перебор всех вариантов? (https://javascript.ru/forum/misc/49382-kak-sdelat-perebor-vsekh-variantov.html)

DJFunGamer 10.08.2014 23:07

Как сделать перебор всех вариантов?
 
Всем привет! Как сделать перебор всех возможных вариантов из определенных символов (10-ти букв, например), чтобы они не повторялись на js или php? Заранее спасибо!

MallSerg 11.08.2014 01:04

Точно так же как и перебор чисел только основанием у тебя будет не 10 знаков а «определенный набор символов»

DJFunGamer 11.08.2014 14:58

А как потом (или сразу в этой программе) убрать варианты с повторяющимися символами?

Tek 11.08.2014 15:16

В 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;
};

DJFunGamer 11.08.2014 15:32

Спасибо огромное! То что надо!

Pavel M. 11.08.2014 16:24

можно использовать простой цикл по числам
преобразовывая функцией .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:36.