Rutina combinaciones...

18/09/2003 - 15:41 por Alfonso D.P. | Informe spam
Hola amigos existira o alguien tendra alguna función que dado una cadena
me devuelva sus combinaciones posibles sin repetirlas...
Me explico con un ejemplo:
Si le doy como parametro "ABC" me devuelva:
ABC
ACB
BAC
BCA
CAB
CBA

Si le doy "122" me devuelva:
122
212
221

Preguntas similare

Leer las respuestas

#1 Paulo Conde
18/09/2003 - 17:28 | Informe spam
Esta funcion hace lo que necesitas:

Public Function Combinacion(ByVal Cadena As String) As String()

Dim i, j, k As Short

Dim cont As Short = 0

Dim tmp() As String

ReDim tmp(Cadena.Length * (Cadena.Length - 1) * (Cadena.Length - 2) - 1)

For i = 0 To Cadena.Length - 1

For j = 0 To Cadena.Length - 1

For k = 0 To Cadena.Length - 1

If Cadena.Chars(k) <> Cadena.Chars(j) And Cadena.Chars(j) <>
Cadena.Chars(i) And Cadena.Chars(k) <> Cadena.Chars(i) Then

tmp(cont) = Cadena.Chars(i) & Cadena.Chars(j) &
Cadena.Chars(k)

cont += 1

End If

Next

Next

Next

ReDim Preserve tmp(cont - 1)

Return tmp

End Function

Espero te sirva
Respuesta Responder a este mensaje
#2 Octavio Hernández
18/09/2003 - 17:50 | Informe spam
Alfonso,

A priori tal función no existe
¿La longitud de la cadena puede ser cualquiera, no?

Salu2 - Octavio

"Alfonso D.P." escribió en el mensaje
news:
Hola amigos existira o alguien tendra alguna función que dado una


cadena
me devuelva sus combinaciones posibles sin repetirlas...
Me explico con un ejemplo:
Si le doy como parametro "ABC" me devuelva:
ABC
ACB
BAC
BCA
CAB
CBA

Si le doy "122" me devuelva:
122
212
221



Respuesta Responder a este mensaje
#3 Paulo Conde
18/09/2003 - 18:08 | Informe spam
La rutina que mande sirve para cualquier longitud de cadena

Saludos

Paulo G. Conde M.
+58-416-4721293
+58-273-5412395
Barinas, Venezuela
Respuesta Responder a este mensaje
#4 Fernando Tubio
18/09/2003 - 19:09 | Informe spam
Seguramente este artículo te puede ayudar. Si bien el foco es el uso de
permutaciones en seguridad, igualmente explica la teoría y algunos
algoritmos.

Using permutations in .NET for Improved Systems Security
http://msdn.microsoft.com/security/...ations.asp

Saludos,

Fernando Tubio


"Alfonso D.P." escribió en el mensaje
news:
Hola amigos existira o alguien tendra alguna función que dado una


cadena
me devuelva sus combinaciones posibles sin repetirlas...
Me explico con un ejemplo:
Si le doy como parametro "ABC" me devuelva:
ABC
ACB
BAC
BCA
CAB
CBA

Si le doy "122" me devuelva:
122
212
221



Respuesta Responder a este mensaje
#5 Octavio Hernández
18/09/2003 - 20:04 | Informe spam
public string[] permutaciones(string s)

{

int n = s.Length;

switch (n)

{

case 0:

return null;

case 1:

string[] perm1 = new string[1];

perm1[0] = s;

return perm1;

case 2:

string[] perm2 = new string[2];

perm2[0] = s;

perm2[1] = "" + s[1] + s[0];

return perm2;

default:

// n!

int max = 1;

for (int i = 1; i <= n; i++)

max *= i;

//

string[] arr = new string[max];

int k = 0;

for (int i = 0; i < n; i++)

{

char c = s[i];

string resto = s.Remove(i, 1);

string[] comb1 = permutaciones(resto);

for (int j = 0; j < comb1.Length; j++)

arr[k++] = "" + c + comb1[j];

}

return arr;

}

}

private void button1_Click(object sender, System.EventArgs e)

{

string[] prueba = permutaciones("ABCDEF");

Console.WriteLine("Cantidad = " + prueba.Length);

foreach (string s in permutaciones("ABCDEF"))

Console.WriteLine(s);

}
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida