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

Popular posts from this blog

Recursion

LinkedList - React Show

Train Game