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