const empty = require('../../util/empty');
/**
* This callback generates each entry of a Matrix
* @callback generateCallback
* @param {number} i - The i-th row of Matrix
* @param {number} j - The j-th column of Matrix
* @returns {number} Entry of Matrix
*/
/**
* Generates a Matrix which entries are the returned value of callback function.
* @memberof Matrix
* @static
* @param {number} row - Number of rows of Matrix
* @param {number} col - Number of columns of Matrix
* @param {generateCallback} cb - Callback function which takes row and column as arguments
* and generates the corresponding entry
* @returns {Matrix} - Generated Matrix
*/
function generate(row, col, cb) {
const matrix = empty(row, col);
if (row === 0 || col === 0) {
return new this([]);
}
for (let i = 0; i < row; i++) {
for (let j = 0; j < col; j++) {
matrix[i][j] = cb(i, j);
}
}
return new this(matrix);
};
module.exports = generate;