diff --git a/src/main/java/matrix/ConstantMatrixInitializer.java b/src/main/java/matrix/ConstantMatrixInitializer.java index 88d798b4b1a0e79292168f2a8d6f47024457fdae..344a56f56dd78197515dfe6c302812cda6924e08 100644 --- a/src/main/java/matrix/ConstantMatrixInitializer.java +++ b/src/main/java/matrix/ConstantMatrixInitializer.java @@ -2,15 +2,14 @@ package matrix; public class ConstantMatrixInitializer<T> implements MatrixInitializer<T> { - // TODO: add instance variables + private final T value; public ConstantMatrixInitializer(T constant) { - // TODO + this.value = constant; } @Override public T initialValueAt(Coordinate coordinate) { - // TODO - return null; + return value; } } diff --git a/src/main/java/matrix/ListMatrix.java b/src/main/java/matrix/ListMatrix.java index a3a4e7d562c43dded22737a89919f85f5eca6040..45ff773a52b1b4f667ec343579dd305bc5a271fb 100644 --- a/src/main/java/matrix/ListMatrix.java +++ b/src/main/java/matrix/ListMatrix.java @@ -1,5 +1,6 @@ package matrix; +import java.util.ArrayList; import java.util.List; @@ -23,11 +24,19 @@ public class ListMatrix<T> implements Matrix<T> { * @param initializer A matrix initializer to set values in the {@link ListMatrix}. */ public ListMatrix(int width, int height, MatrixInitializer<T> initializer) { - // TODO this.width = 0; this.height = 0; this.matrix = null; - this.initializeWith(initializer); // fills the matrix using initializer + this.initializeWith(initializer); + + for (int i = 0; i < height; i++) { + List<T> row = new ArrayList<>(width); + for (int j = 0; j < width; j++) { + row.add(null); + } + matrix.add(row); + } + this.initializeWith(initializer); } public ListMatrix(int width, int height, T constant) { @@ -35,29 +44,30 @@ public class ListMatrix<T> implements Matrix<T> { } private void initializeWith(MatrixInitializer<T> initializer) { - // TODO initialize each cell of the matrix, with a value determined by initializer + for (int i = 0; i < matrix.size(); i++) { + for (int j = 0; j < matrix.get(i).size(); j++) { + matrix.get(i).set(j, initializer.initialValueAt(Coordinate.of(i,j))); + } + } } public int width() { - // TODO - return 0; + return width; } public int height() { - // TODO - return 0; + return height; } @Override public T get(int x, int y) { - // TODO - return null; + return matrix.get(x).get(y); } @Override public void set(int x, int y, T newValue) { - // TODO + matrix.get(x).set(y, newValue); } }