Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #!/usr/local/bin/io
  2.  
  3. Matrix := Object clone
  4.  
  5. Matrix mainList := list()
  6.  
  7. Matrix dim := method(x, y,
  8. for(i, 1, x, mainList push(list()))
  9. for(i, 1, x, mainList foreach(arr, arr setSize(y)))
  10. self
  11. )
  12.  
  13. Matrix transpose := method(
  14. yy := mainList size
  15. xx := mainList at(0) size
  16.  
  17. mainList2 := list()
  18. for(i, 1, xx, mainList2 push(list()))
  19. for(i, 1, xx, mainList2 foreach(arr, arr setSize(yy)))
  20.  
  21. for(x, 0, yy - 1,
  22. for(y, 0, xx - 1,
  23. mainList2 at(y) atPut(x, mainList at(x) at(y))
  24. )
  25. )
  26. mainList = mainList2
  27. self
  28. )
  29.  
  30. Matrix get := method(x,y,
  31. mainList at(x) at(y)
  32. )
  33.  
  34. Matrix set := method(x,y,value,
  35. mainList at(x) atPut(y, value)
  36. )
  37.  
  38. Matrix asString := method(
  39. sizeX := mainList size
  40. sizeY := mainList at(0) size
  41. str := ""
  42. for (x, 0, sizeX - 1,
  43. for (y, 0, sizeY - 1,
  44. str = "#{str} #{mainList at(x) at(y)}" interpolate
  45. )
  46. )
  47. str = str asMutable strip
  48. "#{sizeX} #{sizeY} #{str}" interpolate
  49. )
  50.  
  51. Matrix fromString := method(string,
  52. splitted := string split
  53. "From string: #{string} #{splitted}" interpolate println
  54. x := splitted at(0) asNumber
  55. y := splitted at(1) asNumber
  56. splitted removeAt(0)
  57. splitted removeAt(0)
  58. splitted reverseInPlace
  59. "x:#{x} y:#{y} " interpolate println
  60. temp := dim(x,y)
  61. for (xx, 0, x - 1,
  62. for (yy, 0, y - 1,
  63. temp mainList at(xx) atPut(yy, splitted pop)
  64. )
  65. )
  66. temp
  67. )
  68.  
  69. matrix := Matrix dim(2,3)
  70. matrix println
  71.  
  72. matrix set(0,0,1)
  73. matrix set(0,1,2)
  74. matrix set(0,2,3)
  75. matrix set(1,0,4)
  76. matrix set(1,1,5)
  77. matrix set(1,2,6)
  78.  
  79. "GET:" println
  80. matrix get(0,0) println
  81. matrix get(1,1) println
  82.  
  83. "Normal matrix:" println
  84. matrix println
  85. matrix := matrix transpose
  86. "Transposed: " println
  87. matrix println
  88.  
  89. matrix asString println
  90. "Matrix asString: #{matrix}" interpolate println
  91. b := Matrix fromString(matrix asString)
  92. "Matrix fromString: #{b}" interpolate println
  93.  
  94. f := File with("/tmp/matrix.txt")
  95. f openForWriting
  96. f write(matrix)
  97. f close
  98.  
  99. f := File with("/tmp/matrix.txt")
  100. f openForReading
  101. f readLine(line)
  102. f close
  103.  
  104. b:= Matrix fromString(line)
  105. "Matrix fromString: #{b}" interpolate println
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement