¿como puedo crear un programa que genere anagramas?

Iniciado por adninc5, 14 Febrero 2009, 04:38 AM

0 Miembros y 1 Visitante están viendo este tema.

adninc5

La idea es introducir una palabra en un textbox y que en una lista salgan las combinaciones.
Tambien se podrian introducir las letras en varios textbox, pero es preferible la primera opcion.
Gracias.

seba123neo

Hola, pues mira con esto te salen las combianciones de una palabra..

Código (vb) [Seleccionar]
Private Sub Combinaciones(Palabra As String, Optional strFixed As String)
    Dim Recorrer As Integer
    If Len(Palabra) <> 1 Then
        For Recorrer = 1 To Len(Palabra)
            Combinaciones Left$(Palabra, Recorrer - 1) & Mid$(Palabra, Recorrer + 1), strFixed & Mid$(Palabra, Recorrer, 1)
        Next Recorrer
    Else
        List1.AddItem strFixed & Palabra
    End If
End Sub

Private Sub Form_Load()
    Call Combinaciones("Hola")
End Sub


saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

BlackZeroX

#2
Cita de: seba123neo en 14 Febrero 2009, 04:56 AM
Hola, pues mira con esto te salen las combianciones de una palabra..

Código (vb) [Seleccionar]
Private Sub Combinaciones(Palabra As String, Optional strFixed As String)
    Dim Recorrer As Integer
    If Len(Palabra) <> 1 Then
        For Recorrer = 1 To Len(Palabra)
            Combinaciones Left$(Palabra, Recorrer - 1) & Mid$(Palabra, Recorrer + 1), strFixed & Mid$(Palabra, Recorrer, 1)
        Next Recorrer
    Else
        List1.AddItem strFixed & Palabra
    End If
End Sub

Private Sub Form_Load()
    Call Combinaciones("Hola")
End Sub


saludos.

solo lo que se deberia agregar, es que para saber la cantidad de convinacion de una serie de letras, numeros, etc. por ejemplo:


La vida es dura pero el desaliente es aterno

[Se me dio un dia escribir frases y esta me dio aliento]

Para saber la convinacion que se puedan realizar de todos estos caracteres y espacios (aun que sean repetidos) solo se debe contar el numero total y multiplicar por sus antesesores es decir:

la longitud es de 44 letras

Se multiplicaria

44x43x42x41x40x39...x5x4x3x2x1   o en forma matematica  "44!".


El Total es de:

2.658271575x1054 combinaciones (son bastantes no)

en algo mas sencillo como


Lucifer


el total de las letras son 7

así que se multiplicaria

7x6x5x4x3x2x1=5040 combinaciones sin repetir


lucifer
lucifre
luciefr
lucierf
lucirfe
luciref
lucfier
lucfire
lucfeir
lucferi
lucfrie
lucfrei
lciefru
lcieruf
lcierfu
lcirufe
lciruef
lcirfue
lcirfeu
lcireuf
lcirefu
lcfuier
lcfuire
lcfueir
lcfueri
lcfurie
lcfurei
lcfiuer
lcfiure
lcfieur
lcfieru
lcfirue
lcfireu
lcfeuir
lcfeuri
lcfeiur
lcfeiru
lcferui
lcferiu
lcfruie
lcfruei
lcfriue
lcfrieu
lcfreui
lcfreiu
lceuifr
lceuirf
lceufir
lceufri
lceurif
lceurfi
lceiufr
lceiurf
lceifur
lceifru
lceiruf
lceirfu
lcefuir
lcefuri
lcefiur
lcefiru
lcefrui
lcefriu
lceruif
lcerufi
lceriuf
lcerifu
lcerfui
lcerfiu
lcruife
lcruief
lcrufie
lcrufei
lcrueif
lcruefi
lcriufe
lcriuef
lcrifue
lcrifeu
lcrieuf
lcriefu
lcrfuie
lcrfuei
lcrfiue
lcrfieu
lcrfeui
lcrfeiu
lcreuif
lcreufi
lcreiuf
lcreifu
lcrefui
lcrefiu
liucfer
liucfre
... y faltan mas ¬¬"
The Dark Shadow is my passion.

adninc5

Cita de: ░▒▓BlackZeroҖ▓▒░ en 15 Febrero 2009, 07:23 AM
Cita de: seba123neo en 14 Febrero 2009, 04:56 AM
Hola, pues mira con esto te salen las combianciones de una palabra..

Código (vb) [Seleccionar]
Private Sub Combinaciones(Palabra As String, Optional strFixed As String)
    Dim Recorrer As Integer
    If Len(Palabra) <> 1 Then
        For Recorrer = 1 To Len(Palabra)
            Combinaciones Left$(Palabra, Recorrer - 1) & Mid$(Palabra, Recorrer + 1), strFixed & Mid$(Palabra, Recorrer, 1)
        Next Recorrer
    Else
        List1.AddItem strFixed & Palabra
    End If
End Sub

Private Sub Form_Load()
    Call Combinaciones("Hola")
End Sub


saludos.

solo lo que se deberia agregar, es que para saber la cantidad de convinacion de una serie de letras, numeros, etc. por ejemplo:


La vida es dura pero el desaliente es aterno

[Se me dio un dia escribir frases y esta me dio aliento]

Para saber la convinacion que se puedan realizar de todos estos caracteres y espacios (aun que sean repetidos) solo se debe contar el numero total y multiplicar por sus antesesores es decir:

la longitud es de 44 letras

Se multiplicaria

44x43x42x41x40x39...x5x4x3x2x1   o en forma matematica  "44!".


El Total es de:

2.658271575x1054 combinaciones (son bastantes no)

en algo mas sencillo como


Lucifer


el total de las letras son 7

así que se multiplicaria

7x6x5x4x3x2x1=5040 combinaciones sin repetir


lucifer
lucifre
luciefr
lucierf
lucirfe
luciref
lucfier
lucfire
lucfeir
lucferi
lucfrie
lucfrei
lciefru
lcieruf
lcierfu
lcirufe
lciruef
lcirfue
lcirfeu
lcireuf
lcirefu
lcfuier
lcfuire
lcfueir
lcfueri
lcfurie
lcfurei
lcfiuer
lcfiure
lcfieur
lcfieru
lcfirue
lcfireu
lcfeuir
lcfeuri
lcfeiur
lcfeiru
lcferui
lcferiu
lcfruie
lcfruei
lcfriue
lcfrieu
lcfreui
lcfreiu
lceuifr
lceuirf
lceufir
lceufri
lceurif
lceurfi
lceiufr
lceiurf
lceifur
lceifru
lceiruf
lceirfu
lcefuir
lcefuri
lcefiur
lcefiru
lcefrui
lcefriu
lceruif
lcerufi
lceriuf
lcerifu
lcerfui
lcerfiu
lcruife
lcruief
lcrufie
lcrufei
lcrueif
lcruefi
lcriufe
lcriuef
lcrifue
lcrifeu
lcrieuf
lcriefu
lcrfuie
lcrfuei
lcrfiue
lcrfieu
lcrfeui
lcrfeiu
lcreuif
lcreufi
lcreiuf
lcreifu
lcrefui
lcrefiu
liucfer
liucfre
... y faltan mas ¬¬"

¿Pero como seria el codigo?

BlackZeroX

Cita de: adninc5 link=topic=245219.msg1180492#msg1180492
¿Pero como seria el codigo?
/quote]

En serio quieres que te lo responda?

El codigo mas compacto ya te dio Seba123Neo yo en lo personal te lo hubera dado con un poco mas de lineas para q le entendieras pero el mejor es de Seba123Neo
The Dark Shadow is my passion.

Krackwar ™

Este es otro ejemplo de los tipicos que quieren que le hagan la tarea , ultimamente se estan viendo mucho.
WHK es mas u17r4m4573r31337 que yo



El error mas grande de el mundo es decir que el ser humano es inteligente.

Facismo , antifacismo , etc.. la misma mierda ..
Soy el-> http://tinyurl.com/fantasma-de-krackwar
Código (asm) [Seleccionar]

mov ecx,1000
Etiqueta:
invoke printf,"No Copiare en clases"
loop Etiq

BlackZeroX

#6
Cita de: N1ghtScr34m en 16 Febrero 2009, 04:15 AM
Este es otro ejemplo de los tipicos que quieren que le hagan la tarea , ultimamente se estan viendo mucho.

Amm si eso parece con eso de que ya van a salir algunos de sus escuelas (colmo) se ven a varios, pero en todo caso el error aqui es dar un codigo es mejor dar la info o link a donde se de info detallada mas no el Source hecho, posiblemente ayudar con un codigo que ya este realizando pero NUNCA darselo REALIZADO/HECHO y mucho menos si NO SABE NADA DE NADA ¬¬".

Edito para no RE-POST--------

En la Bandeja de Privados tengo:

Cita de: adninc5 date=1234753896
Es que ese no me funciona
Usa tu cabeza o leete un Manual y si no Sabes dejalo.

Cita de: adninc5 date=1234755033
Gracias. Pero me salen muy pocas combinaciones
Por Dios si es la palabra "Hola" el total es de 4x3x2x1=24 combinaciones SIN Repetir
Si es "P e n d e j o" (sin espacios) el total es de 7x6x5x4x3x2x1=5040 combinaciones SIN Repetir.

Por favor no pidas mas de las que son Matematicamente ¬¬# >:( >:( >:( ademas ya lo explique en el 3er post de este TEMA.

Cita de: adninc5 date=1234755089
Y quisiera que en un textbox pudiera ingresar la palabra.

Bueno este tipo que, apoco no sabe algo Sencillo como usar los TextBox y sus propiedades?

Solo me queda decir: nadie es maestro de nada, este foro es de dudas y respuestas PERO TENIENDO BASES en sus dudas, por Luci.

NO INTENTES CORRER SIN ANTES SABER CAMINAR Y APENAS ESTAS GATENADO O EN SU DEFECTO TE ESTAN CARGANDO ¬¬".

P.D.: Si a alguien ofendo con las mayusculas no esperen disculpas ya que solo así se entiende.!!¡¡ (ojala pudiera meter la mano al monitor y pegarle un susto endemoniado a... pero no se puede ¬¬ posiblemente en unos 2 siglos ya xP)
The Dark Shadow is my passion.

CICOLO_111234

pero sin quieres sin + saber por ejemplo cuanto es 7!, utiliza este codigo:

inserta un timer, un command y 2 textboxs y escribe este codigo:

Option Explicit
Dim a
Dim b


Private Sub Command1_Click()
a = Text1.Text
Timer1.Enabled = True

End Sub

Private Sub form_load()

b = 1
End Sub
Private Sub Timer1_Timer()
b = b * a
If a - 1 <> 0 Then
a = a - 1
Else
Text2.Text = "Resultado: " & b
End If
End Sub

BlackZeroX

#8
Cita de: CICOLO_111234 en 17 Febrero 2009, 20:26 PM
pero sin quieres sin + saber por ejemplo cuanto es 7!, utiliza este codigo:

inserta un timer, un command y 2 textboxs y escribe este codigo:

Option Explicit
Dim a
Dim b
Private Sub Command1_Click()
a = Text1.Text
Timer1.Enabled = True
End Sub
Private Sub form_load()
b = 1
End Sub
Private Sub Timer1_Timer()
b = b * a
If a - 1 <> 0 Then
a = a - 1
Else
Text2.Text = "Resultado: " & b
End If
End Sub


por Luci ¬¬"

Usar un timer Error Feo.
No Limpias las variables.
MuchasLineas de Codigo.

por Luci ¬¬"

Conclución Codigo Feo e Ineficiente (al timer en interval le pongo cada 10 segundos y tardaria un buen en deducer las combinaciones ¬¬" )

Aca dejo mi Codigo menos lineas y menos memoria de uso.

Solo agregar un modulo y pegar este codigo (No se nesesita formulario en el Proyecto)

Configurar el proyecto para que arranque el proceso Sub Main (Solo si tienes un Formulario en el proyecto) y listo correrlo.

Código (Vb) [Seleccionar]

Option Explicit
Sub main()
    MsgBox NumConvinacion(Val(InputBox("Numero de Caracteres:", "Cantidad", "1")))
End Sub
Function NumConvinacion(Optional ByVal Cantidad As Integer = 1) As Double
    NumConvinacion = 1
    Dim i As Integer
    For i = 1 To Cantidad: NumConvinacion = NumConvinacion * i: Next i
End Function


P.D.: se limita a   :silbar: :silbar: 170! :silbar: :silbar:

Dulces Lunas
The Dark Shadow is my passion.