Created
November 27, 2011 11:07
-
-
Save devnoo/1397415 to your computer and use it in GitHub Desktop.
Seven languages in seven weeks : Solutions IO Day2 two dimensional list
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Matrix := Object clone | |
Matrix dim := method (x,y, | |
if (self proto == "Object", return Matrix clone dim(x, y)) | |
self internalList := List clone; | |
self size_x := x; | |
self size_y := y; | |
for(i, 1, y, | |
internalList append(List clone setSize(x)); | |
) | |
return self | |
) | |
Matrix set := method(x,y,value, | |
self internalList at(x) atPut( y, value) | |
) | |
Matrix get := method(x,y, | |
self internalList at(x) at(y) | |
) | |
Matrix transpose := method( | |
result := Matrix clone dim(size_y,size_x); | |
for (i, 0, size_y -1 , | |
for (j, 0, size_x -1, | |
result set(j, i, self get(i, j)) | |
) | |
); | |
return result | |
) | |
Matrix print := method( | |
internalList foreach(element, | |
first := true; | |
element foreach(subelement, | |
if (first, subelement print; first = false, ", " print; subelement print) | |
) | |
"" println | |
) | |
) | |
Matrix toFile := method(file, | |
file := File openForUpdating(file) | |
internalList foreach(element, | |
first := true; | |
element foreach(subelement, | |
if (first, file write(subelement asString) ; first = false, file write (", " .. ( subelement asString))) | |
) | |
file write("\n") | |
) | |
file close | |
) | |
Matrix fromFile := method(file, | |
file := File open(file) | |
result := Matrix clone | |
result internalList = List clone | |
file foreachLine(line, | |
result internalList append (line splitNoEmpties(",")); | |
) | |
file close | |
return result | |
) | |
twoDimList := Matrix dim(2,3) | |
twoDimList set(0, 0, 1) | |
twoDimList set(0, 1, 2) | |
twoDimList set(1, 0, 3) | |
twoDimList set(1, 1, 4) | |
twoDimList set(2, 0, 5) | |
twoDimList set(2, 1, 6) | |
twoDimList print | |
transposed := twoDimList transpose | |
transposed print | |
transposed toFile("transposed.txt") | |
fromFile := Matrix fromFile("transposed.txt") | |
fromFile print | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment