diff --git a/src/main/java/matrix/Coordinate.java b/src/main/java/matrix/Coordinate.java index f3e5ac009ee837b1c3998c6b1f033e42019669b6..9d4c77a04477a68d0bba65b5bb5fc9f70aa5f674 100644 --- a/src/main/java/matrix/Coordinate.java +++ b/src/main/java/matrix/Coordinate.java @@ -15,8 +15,7 @@ public record Coordinate(int x, int y) { * @return A new {@link Coordinate} instance. */ public static Coordinate of(int x, int y) { - // TODO: compléter ce fabriquant - return null; + return new Coordinate(x, y); } /** @@ -25,8 +24,7 @@ public record Coordinate(int x, int y) { * @return The left adjacent {@link Coordinate}. */ public Coordinate left() { - // TODO: à compléter - return null; + return new Coordinate(x-1, y); } /** @@ -35,8 +33,7 @@ public record Coordinate(int x, int y) { * @return The right adjacent {@link Coordinate}. */ public Coordinate right() { - // TODO: à compléter - return null; + return new Coordinate(x+1, y); } /** @@ -45,8 +42,7 @@ public record Coordinate(int x, int y) { * @return The above adjacent {@link Coordinate}. */ public Coordinate above() { - // TODO: à compléter - return null; + return new Coordinate(x, y+1); } /** @@ -55,8 +51,7 @@ public record Coordinate(int x, int y) { * @return The below adjacent {@link Coordinate}. */ public Coordinate below() { - // TODO: à compléter - return null; + return new Coordinate(x, y-1); } /** @@ -73,8 +68,7 @@ public record Coordinate(int x, int y) { * @return A list of orthogonal neighboring {@link Coordinate}s. */ public List<Coordinate> orthogonalNeighbours() { - // TODO: à compléter - return List.of(); + return List.of(left(), right(), above(), below()); } /** @@ -92,8 +86,11 @@ public record Coordinate(int x, int y) { * @return A list of diagonal neighboring {@link Coordinate}s. */ public List<Coordinate> diagonalNeighbours() { - // TODO: à compléter - return List.of(); + return List.of( + new Coordinate(x-1, y-1), + new Coordinate(x+1, y-1), + new Coordinate(x-1, y+1), + new Coordinate(x+1, y+1)); } /** @@ -111,8 +108,11 @@ public record Coordinate(int x, int y) { * @return A list of all neighboring {@link Coordinate}s. */ public List<Coordinate> orthodiagonalNeighbours() { - // TODO: à compléter - return List.of(); + return List.of(left(), right(), above(), below(), + new Coordinate(x-1, y-1), + new Coordinate(x+1, y-1), + new Coordinate(x-1, y+1), + new Coordinate(x+1, y+1)); } @Override diff --git a/src/main/java/matrix/CoordinateIterator.java b/src/main/java/matrix/CoordinateIterator.java index 810b71287e52821943a45e52eb7959ace9df7f06..345a0d2c2b203cf88e9ff010c2b0892767d4d7b7 100644 --- a/src/main/java/matrix/CoordinateIterator.java +++ b/src/main/java/matrix/CoordinateIterator.java @@ -8,7 +8,10 @@ import java.util.NoSuchElementException; * height range. */ class CoordinateIterator implements Iterator<Coordinate> { - + private int width; + private int height; + private int curretentx=0; + private int currenty=0; /** * Creates a new {@link CoordinateIterator} with the specified width and height. * @@ -16,8 +19,8 @@ class CoordinateIterator implements Iterator<Coordinate> { * @param height The height of the coordinate range. */ public CoordinateIterator(int width, int height) { - // TODO: à compléter - } + this.width = width; + this.height = height; } /** * Checks if there are more {@link Coordinate}s to iterate over. @@ -26,8 +29,7 @@ class CoordinateIterator implements Iterator<Coordinate> { */ @Override public boolean hasNext() { - // TODO: à compléter - return false; + return currenty < height; } /** @@ -38,7 +40,15 @@ class CoordinateIterator implements Iterator<Coordinate> { */ @Override public Coordinate next() { - // TODO: à compléter - return null; + if (!hasNext()) { + throw new NoSuchElementException("No more Elements"); + } + Coordinate coordinates = new Coordinate(curretentx,currenty); + curretentx++; + if (curretentx >= width) { + curretentx=0; + currenty++; + } + return coordinates; } }