Я хотел бы создать функцию для Google Таблиц, которая позволяет мне перечислять все возможные комбинации чисел от 1 до 8, объединенные 4 раза (от 1111 до 8888, я думаю, что это 8 ^ 4 = 4096).
(Скриншот добавляю для наглядности).
До сих пор я пробовал:
=ArrayFormula(transpose(split(concatenate(A2:A9&B2:B9&C2:C9&D2:D9& char(9)),char(9))))
... но это дает мне только 8 комбинаций: 1111, 2222, 3333, 4444, 5555, 6666, 7777, 8888.
Я немного плохо умею программировать, особенно с новыми языками, поэтому я очень благодарен за любую помощь!
2 ответа
Вот небольшая настраиваемая функция, которая создает все комбинации строки (проще писать для строк):
function combinations(arr) {
return arr.reduce(function(prod, row) {
var out = [];
for (i in row) {
out = out.concat(prod.map(function(x) {
return x.concat(row[i]);
}));
}
return out;
}, [[]]);
}
Использование его как =combinations(A2:D9)
приведет к созданию 4 ^ 8 комбинаций, каждая длиной 8, и это не то, что вам нужно. Но достаточно легко транспонировать:
=combinations(transpose(A2:D9))
Вышеупомянутая функция возвращает комбинации в виде прямоугольного массива, поэтому в вашем примере вывод будет иметь ширину 4 столбца. Если вы хотите объединить комбинации в одну ячейку (чтобы вывод был одним столбцом), используйте эту измененную версию:
function joincombinations(arr) {
return arr.reduce(function(prod, row) {
var out = [];
for (i in row) {
out = out.concat(prod.map(function(x) {
return x.concat(row[i]);
}));
}
return out;
}, [[]]).map(function(row) {
return row.join("");
});
}
Использование: =joincombinations(transpose(A2:D9))
Пытаться
=arrayformula(if(row(A:A)>4096,"",int((row(A:A)-1)/512)+1&mod(int((row(A:A)-1)/64),8)+1&mod(int((row(A:A)-1)/8),8)+1&mod(int((row(A:A)-1)/1),8)+1))
(необходимо не менее 4096 строк в листе).
Похожие вопросы
Связанные вопросы
Новые вопросы
function
Функция (также называемая процедурой, методом, подпрограммой или подпрограммой) - это часть кода, предназначенная для выполнения одной конкретной задачи. Используйте этот тег для вопросов, которые конкретно связаны с созданием или вызовом функций. Для помощи в реализации функции для выполнения задачи используйте вместо этого [алгоритм] или специфичный для задачи тег.