diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5241a72 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.class \ No newline at end of file diff --git a/AppLaser.java b/AppLaser.java new file mode 100644 index 0000000..4f8df4c --- /dev/null +++ b/AppLaser.java @@ -0,0 +1,9 @@ +public class AppLaser { + + public static void main(String [] args) { + Universe universe = new Universe(12, 12); + + universe.print(); + } + +} diff --git a/Universe.java b/Universe.java new file mode 100644 index 0000000..227c9a6 --- /dev/null +++ b/Universe.java @@ -0,0 +1,44 @@ +// Antoine CRETUAL, Lukian LEIZOUR, 14/02/2024 + +public class Universe { + // Atributes + + private int[][] grid; + private int length, height; + + // Constructors + + public Universe(int length, int height) { + this.grid = new int[height][length]; + this.height = height; + this.length = length; + int i, j; + for (i = 1; i < this.height - 1; i++) { + for (j = 1; j < this.length - 1; j++) { + grid[i][j] = 0; + } + } + + for (i = 0; i < this.height; i++) { + grid[i][0] = -1; + grid[i][length - 1] = -1; + } + + for (j = 0; j < this.length; j++) { + grid[0][j] = -1; + grid[height - 1][j] = -1; + } + } + + // Methods + + public void print() { + int i, j; + for (i = 0; i < this.height; i++) { + for (j = 0; j < this.length; j++) { + System.out.printf("%3d", this.grid[i][j]); + } + System.out.print("\n"); + } + } +} \ No newline at end of file diff --git a/algo.txt b/algo.txt new file mode 100644 index 0000000..385b680 --- /dev/null +++ b/algo.txt @@ -0,0 +1,20 @@ +Setup: +- Taille de la grille +- Obstacles +- Départ du rayon (avec l'orientation) +- Point d'arrivée + +Déplacement: +- A chaque position on teste à gauche, à droite et en face + - Si en face, ne pas mettre de miroir et continuer + - Si a gauche ou à droite, mettre un miroir + - Si aucune solution, retour en arrirère (backtrack) + - Exceptions: + - Impossible de mettre un miroir sur un rayon déjà existant + - Impossible de viser la base du laser + - Impossible de finir dans un cul de sac (sauf si fin) + - /!\ attention aux cases vides non accessibles + +Condition de fin: +- Si la pile est vide cela veut dire que toute les possibilités ont été testés et donc on renvoie la meilleure +- La meilleur solution est celle qui remplie le plus de cases vides avec le moins de miroirs \ No newline at end of file