Всем привет! Есть вопрос насчёт того, как задать матрицу столбцами?
Есть некая фраза с n количеством символов(пусть будет ",единица языка,"), которую надо занести в матрицу как на скрине
var obj2 = {}
for (let a = 0; a < matrici; a++) { //создаём матрицу для расшифровки
let matrix2 = new Array();
for (let i = 0; i < m; i++) {
matrix2[i] = new Array();
for (let j = 0; j < n; j++) {
matrix2[i][j] = shifr[i];
}
shifr = shifr.slice(3);
obj2["matrixSec"+a] = matrix2;
}
}
console.log(obj2)
Ответы (2 шт):
Автор решения: Алексей Р
→ Ссылка
var text = ",единица языка,";
var rows = 3;
var cols = Math.ceil(text.length / rows);
var x = new Array(rows);
for (var i = 0; i < x.length; i++) {
x[i] = new Array(cols);
}
for (var i = 0; i < text.length; i++) {
x[i%rows][Math.floor(i/rows)]=text[i];
}
console.log(x);
Автор решения: De.Minov
→ Ссылка
Вариант с визуализацией.
Чем-то похож на ответ от Алексея Р, вот только использует один цикл.
var word = ',единица языка,'.split('');
var row = 3;
var matrix = [];
for(var i = 0; i < word.length; i++) {
var index = i % row;
if(!matrix[index]) matrix[index] = [];
matrix[index].push(word[i]);
}
// visualization
var table = document.createElement('table');
for(var a = 0; a < matrix.length; a++) {
var tr = document.createElement('tr');
for(var b = 0; b < matrix[a].length; b++) {
var td = document.createElement('td');
td.textContent = matrix[a][b];
tr.append(td);
}
table.append(tr);
}
document.body.append(table);
table, th, td {
border: 1px solid #999;
border-collapse: collapse;
}
td {
padding: .05em .3em;
}
