Autor
|
Tema: Palabras aleatorias SIN repeticion [ayuda] (Leído 10,474 veces)
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Hola!! a ver si me podeiss ayudar, la duda es: Tengo esto para generar palabras aleatorias: Pero quiero que esas palabras no se puedan repetir... y ya esta, asi de simple... (No os asusteis que esta en sucio ) Private Sub Aleatory_Comb(ByRef CharList() As String, ByVal iDigits As Integer, ByVal iNumber As Long) Dim sWord As String Dim x As Long Dim y As Long For y = 1 To iNumber For x = 1 To iDigits Randomize sWord = sWord + CharList((Rnd * (UBound(CharList()) - 1) + 1)) Next MsgBox sWord: sWord = "" Next End Sub Private Sub Form_Load() Dim Matriz() As String Matriz = Split("a,b,c,d,e,f,g,h,i,j,k,l,,m,ñ,o,p,q,r,s,t,u,v,w,x,y,z", ",") Call Aleatory_Comb(Matriz, 5, 7) End Sub
Gracias!!
|
|
« Última modificación: 15 Junio 2010, 02:23 am por *PsYkE1* »
|
En línea
|
|
|
|
TeKNo dUKe
Desconectado
Mensajes: 91
^-^
|
Porque no guardas en un array las palabras generadas y cada vez que generas una nueva si es repetida no la agregas ni la devuelves si es nueva la devuelves?.-
|
|
|
En línea
|
"Lucy is an artist. Lucy paints pictures of Barbara Streisand"
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Pense eso ya, pero si genero 5000 palabras y cada una que genere tengo que buscarla en el array se demoraria mucho la cosa, no crees?? Salu2 y gracias!
|
|
|
En línea
|
|
|
|
TeKNo dUKe
Desconectado
Mensajes: 91
^-^
|
Es que es bien simple si no lo guardas no sabes si la palabra la generaste o no, en algún momento vas a tener que guardarlas y en algún momento compararlas. De todas formas no se en que pc estes programando pero no veo mejor eficiencia que tener un arraylist y preguntarle si ya tiene el elemento guardado.
Si quieres mas eficiencia haces tu el metodo de busqueda por ejemplo un algoritmo de busqueda binaria y cuando asignas siempre asignas de forma ordenada las palabras así mejoraras la eficiencia, de todas forma prueba lo que te sugiero no creo que tengas una demora de mas de 2ms en devolver si la palabra esta o no en el arraylist con 5k registros.-
|
|
|
En línea
|
"Lucy is an artist. Lucy paints pictures of Barbara Streisand"
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
Hace tiempo hice lo mismo pero con numeros de n cifras... Y pes, yo no veo otra forma de no generar las mismas palabras que comparandolo con las otras palabras generadas... Al menos no uno mas eficiente... Si lo logras seria muy buen aporte
|
|
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja
|
|
|
TeKNo dUKe
Desconectado
Mensajes: 91
^-^
|
Si las palabras fueran todas las que puedes formar con X letras, o determinadas secuencias quizás se pudiera pensar en algún algoritmo con programación dinámica, o backtraking pero así palabras al azar de cualquier largo, sin guardarlas no veo como y de todas formas con pd o backtrak vas a necesitar guardar cosas. Opino igual si encuentran una forma sin guardar seria un buen aporte, estare atento al tema .-
|
|
|
En línea
|
"Lucy is an artist. Lucy paints pictures of Barbara Streisand"
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Yo uso este Modulo de Clase para esto Cls_StrCmb.cls, aqui les dejo un Ejemplo practico SIN FORM. Estableces el proceso inicial en Sub Main OJO!¡. Cls_StrCmb.cls' ' ///////////////////////////////////////////////////////////// ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) // ' // // ' // Web: http://InfrAngeluX.Sytes.Net/ // ' // // ' // |-> Pueden Distribuir Este Codigo siempre y cuando // ' // no se eliminen los creditos originales de este codigo // ' // No importando que sea modificado/editado o engrandesido // ' // o achicado, si es en base a este codigo es requerido // ' // el agradacimiento al autor. // ' ///////////////////////////////////////////////////////////// ' Rem Opciones. Option Explicit Rem Eventos. Event StrOuput(ByRef Str_Text As String, ByRef Cancel As Boolean) Rem Declaracion (Variables). Private Priv_String As String Rem Propiedades. Public Property Get String_() As String String_ = Priv_String End Property Public Property Let String_(Str_String As String) Priv_String = Str_String End Property Rem Procesos/funciones. Public Function Start_(Optional StrToProc As String) As Boolean If Len(StrToProc) Then String_ = StrToProc Call CombinateString(Priv_String) End Function Rem funciones/Procesos Private Sub CombinateString(ByRef Str_String As String, Optional ByRef str_Fix As String, Optional ByRef Cancel As Boolean) Dim Lng_LenStr As Long Dim Lng_LenStrIndex As Long If Cancel Then Exit Sub Lng_LenStr = Strings.Len(Str_String) If Lng_LenStr <> 1 Then For Lng_LenStrIndex = 1 To Lng_LenStr Call CombinateString(Strings.Left$(Str_String, Lng_LenStrIndex - 1) & Strings.Mid$(Str_String, Lng_LenStrIndex + 1), str_Fix & Strings.Mid$(Str_String, Lng_LenStrIndex, 1), Cancel) Next Else RaiseEvent StrOuput(str_Fix & Str_String, Cancel) End If End Sub
Cls_Main.cls' ' ///////////////////////////////////////////////////////////// ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) // ' // // ' // Web: http://InfrAngeluX.Sytes.Net/ // ' // // ' // |-> Pueden Distribuir Este Codigo siempre y cuando // ' // no se eliminen los creditos originales de este codigo // ' // No importando que sea modificado/editado o engrandesido // ' // o achicado, si es en base a este codigo es requerido // ' // el agradacimiento al autor. // ' ///////////////////////////////////////////////////////////// ' Rem Opciones. Option Explicit Rem Eventos. Public WithEvents ClsStrCmb As Cls_StrCmb Rem Declaraciones. Private CantCombinateString As Long Rem procesos/Funciones Private Sub ClsStrCmb_StrOuput(ByRef Str_Text As String, ByRef Cancel As Boolean) CantCombinateString = CantCombinateString + 1 Debug.Print Str_Text DoEvents End Sub Public Property Get MaxConbinaciones() As Long MaxConbinaciones = CantCombinateString End Property Private Sub Class_Initialize() Set ClsStrCmb = New Cls_StrCmb End Sub Private Sub Class_Terminate() Set ClsStrCmb = Nothing End Sub
Mod_Main.bas' ' ///////////////////////////////////////////////////////////// ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) // ' // // ' // Web: http://InfrAngeluX.Sytes.Net/ // ' // // ' // |-> Pueden Distribuir Este Codigo siempre y cuando // ' // no se eliminen los creditos originales de este codigo // ' // No importando que sea modificado/editado o engrandesido // ' // o achicado, si es en base a este codigo es requerido // ' // el agradacimiento al autor. // ' ///////////////////////////////////////////////////////////// ' Rem Opciones. Option Explicit Rem Procesos/funciones Sub MAIN() Dim Cls_NewMainProc As New Cls_Main Const Const_StrtoProc As String = "BlackZeroX" With Cls_NewMainProc With .ClsStrCmb ' // .String_ = Const_StrtoProc Call .Start_(Const_StrtoProc) End With Debug.Print "Max Combinaciones {"; .ClsStrCmb.String_; "} son de"; .MaxConbinaciones End With End Sub
Dulce Infierno Lunar!¡.
|
|
« Última modificación: 15 Junio 2010, 10:28 am por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
' ' ///////////////////////////////////////////////////////////// ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) // ' // // ' // Web: http://InfrAngeluX.Sytes.Net/ // ' // // ' // |-> Pueden Distribuir Este Codigo siempre y cuando // ' // no se eliminen los creditos originales de este codigo // ' // No importando que sea modificado/editado o engrandesido // ' // o achicado, si es en base a este codigo es requerido // ' // el agradacimiento al autor. // ' ///////////////////////////////////////////////////////////// ' Rem Opciones. Option Explicit Rem Procesos/funciones Sub MAIN() Dim Cls_NewMainProc As New Cls_Main Const Const_StrtoProc As String = "BlackZeroX" With Cls_NewMainProc With .ClsStrCmb ' // .String_ = Const_StrtoProc Call .Start_(Const_StrtoProc) End With Debug.Print "Max Combinaciones {"; .ClsStrCmb.String_; "} son de"; .MaxConbinaciones End With End Sub
Pero si no me equivoco esto unicamente te muestra la cantidad de combinaciones posibles, ¿no? Gracias y Salu2!
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
No, te muestra en el debuger las combinaciones posibles de el texto insertado, pero mejor LEE BIEN EL CODIGO FUENTE COMPLETO!¡,
El procesador real esta en Cls_StrCmb y este salta un evento en cada combinación el cual es accinado en Cls_Main el cual es el contener de los evento y el objecto Cls_StrCmb del cual todo empiesa en Mod_Main
Pero mejor correlo y abre el Debuger o Inmediato del IDE de VB6 ( Control + G )
Dulce Infierno Lunar!¡.
|
|
« Última modificación: 15 Junio 2010, 10:38 am por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Nesecito ayuda con un mmorpg y sus recompensas aleatorias
Hacking
|
Josh090
|
3
|
4,547
|
11 Abril 2013, 01:06 am
por Ryuk22
|
|
|
ayuda repeticion
Programación C/C++
|
Choke1
|
5
|
2,872
|
9 Mayo 2015, 18:39 pm
por Choke1
|
|
|
Problema de generar palabras aleatorias [URGENTE]
Java
|
IsmaelBFH
|
5
|
6,430
|
12 Noviembre 2015, 16:18 pm
por PabloPbl
|
|
|
Combinacion Sin repeticion ,en java , Ayuda!!!
Java
|
k3ni9
|
0
|
3,573
|
7 Marzo 2016, 01:57 am
por k3ni9
|
|
|
ayuda sobre invertir palabras
Programación C/C++
|
dokomaster
|
0
|
1,620
|
8 Junio 2016, 01:22 am
por dokomaster
|
|