public class Astar { static final int TAILLE_MAX = 255; static final String USAGE = """ Syntaxe : > java Astar str N # mots de taille = N > java Astar str -N # mots de taille <= N et str = alphabet = string de char (Java) Exemples: > java Astar abc -9 => les mots sur {a,b,c} de taille 0 a 9 > java Astar 01 7 => les nombres binaires sur 7 bits """; static String alphabet; // args[0] static int arg2; // args[1] (= taille ou -taille_max) static char[] result; // var globale pour recurse() static int taille; // var globale pour recurse() /* *** 1. pour l'exercice */ /**** 2. pour l'exercice */ /* 3. pour l'exercice *** */ /* 4. pour l'exercice *****/ /* *** 5. pour l'exercice *** */ /***** 6. pour l'exercice *****/ /* 7. pour * * l'exercice */ private static void recurse(int level) { if (level == 0) { result = new char[taille]; } if (level == taille) { System.out.println(result); } else { for (int i = 0; i < alphabet.length(); i++) { result[level] = alphabet.charAt(i); recurse(level + 1); } } } public static void main(String[] args) { if (args.length != 2) { System.out.println(USAGE); return; } alphabet = args[0]; arg2 = Integer.parseInt(args[1]); if (Math.abs(arg2) > TAILLE_MAX) { System.out.println("Taille trop grande"); return; } if (arg2 >= 0) { taille = arg2; recurse(0); } else for (taille = 0; taille <= -arg2; taille++) recurse(0); } }