Obtendo todas as permutações possíveis de uma sequência ou combinação, incluindo caracteres repetidos em Java
Eu tenho tentado gerar uma lista de todas as seqüências possíveis de 4 caracteres que podem ser compostas por qualquer conjunto de caracteres. Eu usei uma função para gerar cada combinação de 4 caracteres a partir de um conjunto de caracteres, mas cada caractere é usado apenas uma vez. Eu preciso de todas as combinações possíveis usando um determinado conjunto de caracteres, por exemplo:
String[] elements = {"a", "b", "c", "1", "2", "3"};
int[] indices;
CombinationGenerator x = new CombinationGenerator (elements.length, 4);
StringBuffer combination;
while (x.hasMore ()) {
combination = new StringBuffer ();
indices = x.getNext ();
for (int i = 0; i < indices.length; i++) {
combination.append (elements[indices[i]]);
}
System.out.println (combination.toString ());
}
Usando a classe CombinationGenerator deaqui, isso retornará todas as combinações exclusivas de 4 caracteres, como:
'abcd' , 'abc1', 'acb2', 'acb1'
Mas quero todas as sequências possíveis que possam ser criadas usando os caracteres fornecidos. Por exemplo:
'aaaa', 'aaab', 'abc1', 'aac1', '11c2'
Eu tentei todos os métodos recursivos e de permutação que consegui encontrar ou inventar, mas estou perplexo em ir além de gerar todas as combinações como acima, e depois gerar todas as permutações de cada combinação, mas não posso trabalhar como criar um conjunto de combinações usando caracteres repetidos.
Qualquer ajuda, ou mesmo apenas a teoria de como isso poderia ser feito, seria útil.