Комбинация одного масива в другом

Примерный перебор

Нужен алгоритм который переберет все возможные значения масива N з размером тем же что и масивом 1111 в масиве [1111] Нужны все значения от [1111] ..... [11N1] ....[1N1N]...[NNN1] .... до [NNNN] Размер масива 1 может быть большим меньшим


Ответы (1 шт):

Автор решения: vsemozhebuty

Когда вам нужно перебрать комбинации с всего двумя элементами, можно воспользоваться как маской двоичными числами — так вы автоматически получите комбинации из нулей и единиц, в которых цифры можно будет заменить на нужные символы.

Запускаете цикл со счётчиком от нуля до нужного размера, число счётчика превращаете в строку в двоичном представлении, добавляете недостающие вначале нули, а потом меняете нули и единицы на любые нужные элементы. В вашем случае начальный 0 меняем на конечный 1, а начальный 1 на конечный N (только в обратном порядке, чтобы не перепутались начальные и конечные единицы).

const array = [];

for (let i = 0b0000; i <= 0b1111; i++) {
  array.push(
    i.toString(2)
      .padStart(4, 0)
      .replaceAll('1', 'N')
      .replaceAll('0', '1')
  );
}

console.log(array);

→ Ссылка