jak zaprogramowac generowanie reguł

0

Cześć,

Jak zaprogramować generowanie reguł w języku JAVA
Podam przykład dla 3 elementów ale im możne być n

{AB}
{ABC}
{ABCD}

A -> B
B -> A

AB -> C
AC -> B
BC -> A

ABC -> D
ABD -> C
ACD -> B
BCD -> A

Macie może pomysł na kod który będzie generował takie reguły dla n wartości ?

0
String test = "ABD";
ArrayList<Character> al = new ArrayList<>();
al.add('A');
al.add('B');
al.add('C');
al.add('D');
for(int i=0; i<test.length(); i++){
	al.remove((Character)test.charAt(i));
}
System.out.println(al);
0

Dzięki ale u mnie to nie działa?

--------------------Configuration: <Default>--------------------
[]

Process completed.

0

Tu nie ma co nie działać. Jak to zaimplementowałeś?

0

Wygląda na to, że nieprecyzyjnie się wyraziłeś lub źle Cię zrozumiałem.
Te "reguły" wyglądają trochę jak kombinacje ( http://pl.wikipedia.org/wiki/Kombinacja_bez_powt%C3%B3rze%C5%84 ). W Javie prawie do wszystkiego są biblioteki. Do kombinacji również. Np. https://code.google.com/p/combinatoricslib/ . Możesz spróbować wykorzystać to rozwiązanie lub inne podobne i dostosować je do Twojego problemu.

0

"Potrzebuję algorytmu na określenie wszystkich kombinacji bez powtórzeń po n-1 elementów." To chciałeś napisać w pierwszym poście.
przykładowe rozwiązanie:

ArrayList<Character> al = new ArrayList<>();
char capital;
al.add('A');
al.add('B');
al.add('C');
al.add('D');
al.add('E');
al.add('F');
for(int i=0; i<al.size(); i++){
	capital = al.get(i);
	al.remove(i);
	System.out.println(al);
	al.add(i, capital);
}
0

Atlas500, Wiciu bardzo dziękuje za informacje bardzo mi się przydały :)

                
String linia= "AAA;BBB;CCC;DDD";   
List<String> alist1 = new ArrayList <String>();      
StringTokenizer st1 = new StringTokenizer(linia,";");
String atemp = "";

while (st1.hasMoreElements())
{
	atemp = (String) st1.nextElement();
	alist1.add(atemp);
}
       
System.out.println("string = "+ alist1);
System.out.println("liczba stringtokenizer = "+alist1.size());
System.out.println("*******************************************");

for(int i=0; i<alist1.size(); i++)
{
	int itemp = (alist1.size() - i - 1);
	atemp = alist1.get(itemp);
	alist1.remove(itemp);
	System.out.print(alist1);
	System.out.println(" -> "+atemp);
	alist1.add(itemp, atemp);
}
0

Jeszcze raz bardzo dziekuje

1 użytkowników online, w tym zalogowanych: 0, gości: 1