📄 matrix.curry
字号:
class Matrix { // these methods are intended to be overridden by subclasses // if only we had pure virtual/abstract methods in our language... void Init() {} void Set(int x, int y, int value) {} int Get(int x, int y) {} void PrintMatrix() { int i; int j; for (i = 0; i < 10; i = i + 1) { for (j = 0; j < 10; j = j + 1) Print(Get(i,j), "\t"); Print("\n"); } } void SeedMatrix() { int i; int j; for (i = 0; i < 5; i = i + 1) for (j = 0; j < 5; j = j + 1) Set(i,j, i+j); Set(2,3,4); Set(4,6,2); Set(2,3,5); Set(0,0,1); Set(1,6,3); Set(7,7,7); }}// Matrix as an arrayclass DenseMatrix extends Matrix { int[][] m; void Init() { int i; int j; // create mem m = NewArray(10, int[]); for (i = 0; i < 10; i = i +1) m[i] = NewArray(10, int); // set all to 0. for (i = 0; i < 10; i = i + 1) for (j = 0; j < 10; j = j + 1) m[i][j] = 0; } void Set(int x, int y, int value) { m[x][y] = value; } int Get(int x, int y) { return m[x][y]; }}class SparseItem { int data; int y; SparseItem next; void Init(int d, int y, SparseItem next) { this.data = d; this.y = y; this.next = next; } SparseItem GetNext() { return next;} int GetY() { return y;} int GetData() { return data;} void SetData(int val) { data = val;} }// Matrix as linked listsclass SparseMatrix extends Matrix { SparseItem[] m; void Init() { int i; // create mem m = NewArray(10, SparseItem); for (i = 0; i < 10; i = i + 1) m[i] = null; } SparseItem Find(int x, int y) { SparseItem elem; elem = m[x]; while (elem != null) { if (elem.GetY() == y) { return elem; } elem = elem.GetNext(); } return null; } void Set(int x, int y, int value) { SparseItem elem; elem = Find(x,y); if (elem != null) { elem.SetData(value); } else { elem = New(SparseItem); elem.Init(value, y, m[x]); m[x] = elem; } } int Get(int x, int y) { SparseItem elem; elem = Find(x,y); if (elem != null) { return elem.GetData(); } else { return 0; } }}void main() { Matrix m; Print("Dense Rep \n"); m = New(DenseMatrix); m.Init(); m.SeedMatrix(); m.PrintMatrix(); Print("Sparse Rep \n"); m = New(SparseMatrix); m.Init(); m.SeedMatrix(); m.PrintMatrix();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -