Problem solving with JS
HTML
CSS
td {width: 2em;}
JS
let data = {
rows: null,
cols: null,
matrix: null
};
function generateString(n, m) {
for(let i = 0, str=''; i < n; i+=1) {
for(let j = 0; j < m; j+=1) {
if (j % 2 === 0) {
str += `${j * n + i+1}`
} else {
str += `${j * n + (n-i-1) +1}`
}
if(j !== m - 1) {
str += ' '
}
}
if (i === n-1) {
return str;
}
str += '\n';
}
}
function generateMatrix(r, c) {
if ( r && c) {
for(let res=[], i = 0; i < r; i+=1) {
res[i] = [];
for(let j=0; j < c; j++) {
res[i].push(j % 2 === 0 ? j * c + i + 1 : j * r + (r-i-1) + 1);
}
if (i === r-1) {
return res;
}
}
}
return 'not a vaild input';
}
function convertTable(matrix) {
const row = arr => arr.map(el => `${el} `).join('');
const rows = data => data.map(datum => `${row(datum)} `).join('');
return `${rows(matrix)}
`;
}
document.getElementById('rows').addEventListener('change', ({target: {value}}) => {
data.rows = parseInt(value) || 0;
if ( data.cols ) {
data.matrix = generateMatrix(data.rows, data.cols);
}
});
document.getElementById('cols').addEventListener('change', ({target: {value}}) => {
data.cols = parseInt(value) || 0;
if ( data.rows ) {
data.matrix = generateMatrix(data.rows, data.cols);
}
});
document.getElementById('generate').addEventListener('click', e => {
if(data.matrix) document.getElementById('result').innerHTML = convertTable(data.matrix);
});

Comments
Post a Comment