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
|
public class TestGen {
public static void main(String[] args) {
print(-1);
print(5);
print(0);
print(1);
print(9);
print(26);
}
private static void print(int n) {
n--;
if ( n>=0 && n<26 ) {
int h = n*2+1; // taille du tableau pour prédessiner le carré
char[][] tab = new char[h][h];
printV1(tab, 0, h, 'a');
//printV2(tab, 0, h, 'a');
Arrays.stream(tab).map(String::new).forEach(System.out::println); // affichage du tableau
}
}
// méthode qui ne dessine que les bords des carrés
private static void printV1(char[][] array, int x, int n, char c) {
n--;
for(int i=x; i<=n; i++) {
array[n][i]=array[i][n]=array[x][i]=array[i][x]=c;
}
x++; // carré suivant
if ( n>x ) {
c++;
printV1(array, x, n, c);
}
}
// méthode qui remplit les carrés entièrement
private static void printV2(char[][] array, int x, int n, char c) {
for(int i=x; i<n; i++) {
for(int j=x; j<n; j++) {
array[i][j]=c;
}
}
x++; // carré suivant
n--;
if ( n>x ) {
c++;
printV2(array, x, n, c);
}
}
} |
Partager