summaryrefslogtreecommitdiff
path: root/io/matrix.io
diff options
context:
space:
mode:
authorGuillermo Ramos2012-04-02 20:48:33 +0200
committerGuillermo Ramos2012-04-02 20:48:33 +0200
commit8ae4691e677414843cf3a84d4327d303fe3e2f41 (patch)
tree6007373b702ece4100819606a82ecbae76ff1dd5 /io/matrix.io
parentfdd1e7abacd96d9bd49c13b2ecfcfe897546acae (diff)
download7l-8ae4691e677414843cf3a84d4327d303fe3e2f41.tar.gz
[Io] Día 2
Diffstat (limited to 'io/matrix.io')
-rw-r--r--io/matrix.io74
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)