1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
new Test();
}
/////////////////////////////////////////////////////////////////////////////////
private Case[][] plateau = null;
public Test() {
plateau = new Case[5][5];
plateau[0][0] = new Case(0, 0, 3);
plateau[0][1] = new Case(0, 1, 1);
plateau[0][2] = new Case(0, 2, 3);
plateau[0][3] = new Case(0, 3, 2);
plateau[0][4] = new Case(0, 4, 1);
plateau[1][0] = new Case(1, 0, 3);
plateau[1][1] = new Case(1, 1, 0);
plateau[1][2] = new Case(1, 2, 1);
plateau[1][3] = new Case(1, 3, 1);
plateau[1][4] = new Case(1, 4, 1);
plateau[2][0] = new Case(2, 0, 1);
plateau[2][1] = new Case(2, 1, 2);
plateau[2][2] = new Case(2, 2, 3);
plateau[2][3] = new Case(2, 3, 0);
plateau[2][4] = new Case(2, 4, 0);
plateau[3][0] = new Case(3, 0, 2);
plateau[3][1] = new Case(3, 1, 3);
plateau[3][2] = new Case(3, 2, 1);
plateau[3][3] = new Case(3, 3, 3);
plateau[3][4] = new Case(3, 4, 1);
plateau[4][0] = new Case(3, 0, 1);
plateau[4][1] = new Case(3, 1, 0);
plateau[4][2] = new Case(3, 2, 2);
plateau[4][3] = new Case(3, 3, 0);
plateau[4][4] = new Case(3, 4, 0);
List<Case> billesRetirees = retireBilles(1, 3);
System.out.println(billesRetirees);
}
public List<Case> retireBilles(int ligne, int colonne) {
return retireBilles(ligne, colonne, plateau[ligne][colonne].couleur, 0, new ArrayList<Case>());
}
public List<Case> retireBilles(int ligne, int colonne, int couleur, int profondeur, List<Case> dejaVisites) {
if (profondeur == 3) {
return dejaVisites;
}
if (ligne < 0 || colonne < 0 || ligne >= plateau.length || colonne >= plateau[0].length) {
return dejaVisites;
}
if (plateau[ligne][colonne].couleur == couleur && dejaVisites.contains(plateau[ligne][colonne]) == false) {
dejaVisites.add(plateau[ligne][colonne]);
dejaVisites = retireBilles(ligne - 1, colonne, couleur, profondeur + 1, dejaVisites);
dejaVisites = retireBilles(ligne, colonne - 1, couleur, profondeur + 1, dejaVisites);
dejaVisites = retireBilles(ligne + 1, colonne, couleur, profondeur + 1, dejaVisites);
dejaVisites = retireBilles(ligne, colonne + 1, couleur, profondeur + 1, dejaVisites);
}
return dejaVisites;
}
}
class Case {
public int ligne = 0;
public int colonne = 0;
public int couleur = 0;
public Case(int ligne, int colonne, int couleur) {
this.ligne = ligne;
this.colonne = colonne;
this.couleur = couleur;
}
public String toString() {
return "[" + ligne + "," + colonne + "," + couleur + "]";
}
} |
Partager