diff options
Diffstat (limited to 'io/matrix.io')
-rw-r--r-- | io/matrix.io | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/io/matrix.io b/io/matrix.io new file mode 100644 index 0000000..3352c67 --- /dev/null +++ b/io/matrix.io @@ -0,0 +1,74 @@ +Matrix := List clone +Matrix dim := method(x, y, + m := Matrix clone + x repeat ( + l := List clone + l setSize(y) + m append(l) + ) + return m +) + +Matrix set := method(x, y, e, + self at(x) atPut(y, e) +) + +Matrix get := method(x, y, + self at(x) at(y) +) + +Matrix xysize := method( + result := List clone + result append(self size) + result append(self at(0) size) + return result +) + +Matrix transpose := method( + dims := self xysize + m := Matrix dim(dims at(1), dims at(0)) + + for (x, 0, dims at(0) -1, + for (y, 0, dims at(1) -1, + m set(y, x, self get (x, y)) + ) + ) + + return m +) + +Matrix toFile := method(fname, + f := File with(fname) + f remove + f openForUpdating + f write(self serialized) + f close + return self +) + +Matrix fromFile := method(fname, + m := doFile(fname) + return m +) + + + +m1 := Matrix dim(2,3) + +m1 set(0,0,0) +m1 set(0,1,1) +m1 set(0,2,2) +m1 set(1,0,3) +m1 set(1,1,4) +m1 set(1,2,5) + +writeln("m1: ", m1) + +m2 := m1 transpose +writeln("m2: ", m2) + +if (m1 == m2 transpose, "Equals!", "Not equals!") println + +m1 toFile("m1.txt") +m3 := Matrix fromFile("m1.txt") +writeln("m3 (serialized from m1): ", m3) |