From 6a93814eaca6a1df356e36bbd41a36c1852420b4 Mon Sep 17 00:00:00 2001 From: b22015696 <maxence.balme@etu.univ-amu.fr> Date: Fri, 8 Nov 2024 16:51:12 +0100 Subject: [PATCH] =?UTF-8?q?avanc=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../matrix/ConstantMatrixInitializer.java | 8 +++--- src/main/java/matrix/ListMatrix.java | 27 ++++++++++++------- src/main/java/matrix/Matrix.java | 2 +- .../java/matrix/SubMatrixInitializer.java | 18 +++++++++++++ 4 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 src/main/java/matrix/SubMatrixInitializer.java diff --git a/src/main/java/matrix/ConstantMatrixInitializer.java b/src/main/java/matrix/ConstantMatrixInitializer.java index 88d798b..86d2574 100644 --- a/src/main/java/matrix/ConstantMatrixInitializer.java +++ b/src/main/java/matrix/ConstantMatrixInitializer.java @@ -2,15 +2,15 @@ package matrix; public class ConstantMatrixInitializer<T> implements MatrixInitializer<T> { - // TODO: add instance variables + private T constant ; public ConstantMatrixInitializer(T constant) { - // TODO + this.constant = constant; } @Override public T initialValueAt(Coordinate coordinate) { - // TODO - return null; + + return constant; } } diff --git a/src/main/java/matrix/ListMatrix.java b/src/main/java/matrix/ListMatrix.java index 418e05d..5074b6c 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,10 +24,9 @@ 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.width = width; + this.height = height; + this.matrix = new ArrayList<>(width); this.initializeWith(initializer); // fills the matrix using initializer } @@ -35,8 +35,17 @@ 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 x=0; x<width; x++) { + List<T> column = new ArrayList<>(height); + + for (int y = 0; y < height; y++) { + column.add(initializer.initialValueAt(new Coordinate(x, y))); + } + matrix.add(column); + } + + } + public int width() { return width; @@ -48,14 +57,14 @@ public class ListMatrix<T> implements Matrix<T> { @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); } } diff --git a/src/main/java/matrix/Matrix.java b/src/main/java/matrix/Matrix.java index f2c908e..bc59511 100644 --- a/src/main/java/matrix/Matrix.java +++ b/src/main/java/matrix/Matrix.java @@ -58,7 +58,7 @@ public interface Matrix<T> extends Iterable<T> { } default Matrix<T> subMatrix(Coordinate corner, int width, int height){ - return null ; + return new ListMatrix<>(width(), height(), new SubMatrixInitializer<>(this.corner)); } diff --git a/src/main/java/matrix/SubMatrixInitializer.java b/src/main/java/matrix/SubMatrixInitializer.java new file mode 100644 index 0000000..368487f --- /dev/null +++ b/src/main/java/matrix/SubMatrixInitializer.java @@ -0,0 +1,18 @@ +package matrix; +public class SubMatrixInitializer <T> implements MatrixInitializer<T> { + + private final Matrix <T> matrix; + + private final Coordinate corner ; + + public SubMatrixInitializer(Matrix<T> matrix, Coordinate corner) { + this.matrix = matrix; + this.corner = corner; + } + + @Override + + public T initalValueAt(Coordinate coordinate) { + return matrix.get(coordinate.plus(corner)); + } +} -- GitLab