Foro de elhacker.net

Programación => Java => Mensaje iniciado por: RockAqp en 3 Abril 2012, 18:46 pm



Título: Ayuda en mi codigo
Publicado por: RockAqp en 3 Abril 2012, 18:46 pm
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(", ");
     }     
   }
 }


Título: Re: Ayuda en mi codigo
Publicado por: RockAqp en 4 Abril 2012, 21:10 pm
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);
      }
}