2D 配列を生成する関数を返す関数を作成する必要があります。関数 mult(x,y) は乗算表を生成する関数を返し、generate_matrix() を呼び出すと行列が返されます。
function mult(x,y){
function generate_matrix(){
var matrix = new Array(x);
for(var k = 0; k < x+1; k++){
matrix[k] = new Array(y);
}
for(var i = 0; i < x+1; i++){
for(var j = 0; j < y+1; j++){
matrix[i][j] = i*j;
}
}
return matrix;
}
return generate_matrix;
}
なんらかの理由で、行列が本来よりも 100 倍大きくなっています。たとえば、var matrix = mult(5,5) を設定してから matrix() を呼び出すと、サイズ 5x5 の配列ではなく、サイズ 50x50 の配列が与えられます。
を設定var m = mult(2,2)
してから呼び出すとm()
、次の 2D 配列が得られます。
[[0,0,0],[0,1,2],[0,2,4]]