Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
59
Task/Matrix-transposition/Jsish/matrix-transposition-1.jsish
Normal file
59
Task/Matrix-transposition/Jsish/matrix-transposition-1.jsish
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
/* Matrix transposition, multiplication, identity, and exponentiation, in Jsish */
|
||||
function Matrix(ary) {
|
||||
this.mtx = ary;
|
||||
this.height = ary.length;
|
||||
this.width = ary[0].length;
|
||||
}
|
||||
|
||||
Matrix.prototype.toString = function() {
|
||||
var s = [];
|
||||
for (var i = 0; i < this.mtx.length; i++) s.push(this.mtx[i].join(","));
|
||||
return s.join("\n");
|
||||
};
|
||||
|
||||
// returns a transposed matrix
|
||||
Matrix.prototype.transpose = function() {
|
||||
var transposed = [];
|
||||
for (var i = 0; i < this.width; i++) {
|
||||
transposed[i] = [];
|
||||
for (var j = 0; j < this.height; j++) transposed[i][j] = this.mtx[j][i];
|
||||
}
|
||||
return new Matrix(transposed);
|
||||
};
|
||||
|
||||
// returns a matrix as the product of two others
|
||||
Matrix.prototype.mult = function(other) {
|
||||
if (this.width != other.height) throw "error: incompatible sizes";
|
||||
|
||||
var result = [];
|
||||
for (var i = 0; i < this.height; i++) {
|
||||
result[i] = [];
|
||||
for (var j = 0; j < other.width; j++) {
|
||||
var sum = 0;
|
||||
for (var k = 0; k < this.width; k++) sum += this.mtx[i][k] * other.mtx[k][j];
|
||||
result[i][j] = sum;
|
||||
}
|
||||
}
|
||||
return new Matrix(result);
|
||||
};
|
||||
|
||||
// IdentityMatrix is a "subclass" of Matrix
|
||||
function IdentityMatrix(n) {
|
||||
this.height = n;
|
||||
this.width = n;
|
||||
this.mtx = [];
|
||||
for (var i = 0; i < n; i++) {
|
||||
this.mtx[i] = [];
|
||||
for (var j = 0; j < n; j++) this.mtx[i][j] = (i == j ? 1 : 0);
|
||||
}
|
||||
}
|
||||
IdentityMatrix.prototype = Matrix.prototype;
|
||||
|
||||
// the Matrix exponentiation function
|
||||
Matrix.prototype.exp = function(n) {
|
||||
var result = new IdentityMatrix(this.height);
|
||||
for (var i = 1; i <= n; i++) result = result.mult(this);
|
||||
return result;
|
||||
};
|
||||
|
||||
provide('Matrix', '0.60');
|
||||
15
Task/Matrix-transposition/Jsish/matrix-transposition-2.jsish
Normal file
15
Task/Matrix-transposition/Jsish/matrix-transposition-2.jsish
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
/* Matrix transposition, in Jsish */
|
||||
require('Matrix');
|
||||
|
||||
if (Interp.conf('unitTest')) {
|
||||
var m = new Matrix([[1,1,1,1],[2,4,8,16],[3,9,27,81],[4,16,64,256],[5,25,125,625]]);
|
||||
; m;
|
||||
; m.transpose();
|
||||
}
|
||||
|
||||
/*
|
||||
=!EXPECTSTART!=
|
||||
m ==> { height:5, mtx:[ [ 1, 1, 1, 1 ], [ 2, 4, 8, 16 ], [ 3, 9, 27, 81 ], [ 4, 16, 64, 256 ], [ 5, 25, 125, 625 ] ], width:4 }
|
||||
m.transpose() ==> { height:4, mtx:[ [ 1, 2, 3, 4, 5 ], [ 1, 4, 9, 16, 25 ], [ 1, 8, 27, 64, 125 ], [ 1, 16, 81, 256, 625 ] ], width:5 }
|
||||
=!EXPECTEND!=
|
||||
*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue