Bonjour à tous,

Je ne sais absolument pas si je poste au bon endroit, donc désolé par avance si je me trompe de forum.

J'utilise la librairie de dk.brics pour la construction d'automates

http://www.brics.dk/automaton/doc/in...on/RegExp.html

Je précise tout de suite que je n'ai pas la possibilité de changer de librairie...


Je voudrais créer un automate qui interdise l'enchainement de la valeur -1, avec d'autres valeurs.

Par exemple :

-1, 2 doit être refusé
2, -1 est accepté

Bref cela devrait être simple, en tout cas, c'est facile à faire avec juste des nombres positifs, mais le fait d'avoir un -1, me pose des problèmes.

Voilà ce que j'ai essayé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
List<String> forbiddenRegExps = new ArrayList<String>();
 
		String allButMinusOne  = "(0|1|2|3|<-2>|<-3>)";
 
		for(int i=0 ; i<2 ; i++){
			forbiddenRegExps.add(allButMinusOne + "*" + "<-1>+" + allButMinusOne +"+");
			System.out.println(allButMinusOne + "*" + "<-1>+" + allButMinusOne +"+");
		}
 
 
		// --- Building the complete automaton
		FiniteAutomaton auto = new FiniteAutomaton();
		for (String reg : forbiddenRegExps) {
			FiniteAutomaton a = new FiniteAutomaton(reg);
			auto = auto.union(a);
			auto.minimize();
		}
		auto = auto.complement();
		auto.minimize();
		boolean b = auto.run(new int[]{0, 1, 2, 3, -1, -1});
		System.err.println("result 1 : " + b + " (should be true)");
 
		boolean b2 = auto.run(new int[]{0, 1, 2, 3, -1, -1, 3});
		System.err.println("result 2 : " + b2 + " (should be false)");
Est ce que quelqu'un a une idée du problème?
Un grand merci d'avance !!