From db0a285295e0834537376357fe253774cfcc4f86 Mon Sep 17 00:00:00 2001 From: Yanis O <oualanyanis01@gmail.com> Date: Wed, 13 Nov 2024 17:32:45 +0100 Subject: [PATCH] =?UTF-8?q?[Ajout]=20M=C3=A9thode=20pour=20calculer=20les?= =?UTF-8?q?=20positions=20=C3=A0=20distance=20Manhattan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/util/PositionUtil.java | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/main/java/util/PositionUtil.java diff --git a/src/main/java/util/PositionUtil.java b/src/main/java/util/PositionUtil.java new file mode 100644 index 0000000..7b2b235 --- /dev/null +++ b/src/main/java/util/PositionUtil.java @@ -0,0 +1,30 @@ +package util; + +import java.util.ArrayList; +import java.util.List; + +public class PositionUtil { + public static List<Position> getPositionsAtManhattanDistance(Position fromPos, int distance, int rows, int cols) { + List<Position> positions = new ArrayList<>(); + int x0 = fromPos.x(); + int y0 = fromPos.y(); + + // Générer toutes les positions à une distance de Manhattan donnée + for (int dx = -distance; dx <= distance; dx++) { + int dy = distance - Math.abs(dx); + + int[] dyOptions = { dy, -dy }; + for (int deltaY : dyOptions) { + int x = x0 + dx; + int y = y0 + deltaY; + + // Vérifier si la position est dans les limites de la matrice + if (x >= 0 && x < rows && y >= 0 && y < cols) { + positions.add(new Position(x, y)); + } + } + } + + return positions; + } +} \ No newline at end of file -- GitLab