hola a todos quiero que me ayuden en este codigo
la verdad es que no se mucho de java pero me han dejado y tengo muchas dudas
me han pedido hacer un codigo como el algoritmo de clausula de kleene
osea si el lenguaje:a,b deve imprimir a,b,aa,ab,ba,bb,aaa.... etc hasta el infinito
lo que hace es una combinatoria al ingresar una palabra
como hago para realizar ese algoritmo
o alguien tiene un metodo mas corto
import java.util.Vector;
import java.util.Scanner;
public class kleene {
private void generateR(String source, String partial,Vector out)
{
String newPartial=new String(partial);
String newSource;
if (source.length()==0)
{
out.addElement(newPartial);
return;
}
for(int i=0;i<source.length();i++)
{
newPartial=partial.concat(source.substring(i,i+1));
newSource=source.substring(0,i);
if (i<(source.length()+1))
newSource=newSource.concat(source.substring(i+1,source.length()));
generateR(newSource, newPartial, out);
}
}
public Vector generate(String source)
{
Vector out=new Vector();
String partial=new String();
generateR(source, partial, out);
return out;
}
public static void main(String[] args)
{
Scanner read = new Scanner(System.in);
String pal = read.next();
kleene a= new kleene();
Vector v=a.generate(pal.toString());
for(int i=0;i<v.size();i++)
{
System.out.print((String)v.elementAt(i));
System.out.print(", ");
}
}
}
Bueno ya lo resolvi despues de tanto ver el codigo
aunque aun se puede perfeccionar
import java.util.Scanner;
import java.util.Vector;
public class klene {
public Vector iterar(String[] tem,Vector v,int y)
{
tem = (String[])v.toArray(new String[v.size()]);
//tem[tem.length+1]=null;
String[] tem1=tem;
int x=tem.length;
int i=y;
if(v.size()<20)
{
for( i=y;i<x;i++)
{
//int y=0;
int c=0;
do
{
String cad = tem1[c];
//tem[x+c]= tem1+cad;
v.addElement(tem1+cad);
c++;
}while(c<x);
y=i;
}
iterar(tem,v,y);
}
return v;
}
public static void main(String[] args)
{
System.out.println("Escriba el Lenguaje(Separado x comas)");
Scanner read = new Scanner(System.in);
String pal = read.next();
String[] arrayLen = pal.split(",");
Vector v=new Vector();
for(int i=0;i<arrayLen.length;i++)
v.addElement(arrayLen);
klene a= new klene();
v=a.iterar(arrayLen,v,0);
/*for (int i = 0; i < salida.length; i++) {
System.out.println(salida);
}
// Vector v=a.generate(pal.toString());
¨*/
for(int i=0;i<v.size();i++)
{
System.out.print((String)v.elementAt(i));
System.out.print(", ");
}
// System.out.print(arrayLen.length);
}
}