Hola amigos, necesito su ayuda :huh:, necesito conbinar todos los caracteres del abecedario de 2 a 6 digitos, algo asi:
aa
ab
ac
ad
...
az
bb
ba
...
Muchas gracias!!! ;D
Cita de: *PsYkE1* en 12 Abril 2010, 21:05 PM...de 2 a 6 digitos,...
Con eso te referis a que empieza desde
aa y termina en
zzzzzz
si, exacto ;)
Podrias usar la funcion de mi amigo Og., aunque la podrias modificar así:
function muestra($num){
$a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$cont = strlen($a);
$ctp = 0;
while($num != 0){$tmp[$ctp] = $num%$cont; $num -= $tmp[$ctp++]; $num /= $cont;}
while($ctp != 0){echo $a[$tmp[--$ctp]];}
}
for($i=1;$i<300;$i++){
muestra($i);
echo "<br>";
}
Resultado:
B
C
D
E
[..Snip..]
LM
LN
...mmm no entendi mucho el codigo anterior...¿php?
otra opcion podria ser anidar for de hasta seis niveles...me imagino k esto
consumira harta memoria es algo de 500 millones de combinaciones ufff :-X :-X
En Visual Basic 6.0 sería algo así: (Desde hace mucho raton que no programó en VB, así que obviamente debe tener algun error)
Public Function Muestra(strNumero As String) As String
Dim strAbecedario As String
Dim intContador, intctp, intNum As integer
Dim intTemp(), inta() As Integer
strAbecedario = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
intContador = Len(strAbecedario)
intctp = 0
while intNum <> 0
intTemp(intctp) = intNum MOD intCont
intNum -= intTemp(intctp + 1)
intNum /= intCont
End While
While intctp <> 0
inta(intTemp(intctp - intctp))
End While
End Function
For inti As integer = 0 to 300
Muestra(inti)
Next
' // // // // // // // // // // // // // // // //
' // Se nesesita solo un ListBoX = List1// // // //
' // // // // // // // // // // // // // // // //
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()
List1.visible = false
Call Combinaciones("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
List1.visible = true
End Sub
Sangriento Infierno Lunar!¡.
Gracias BlackZeroX▓▓▒▒░░ ;D, pero creo q no es lo que necesito:
En vez de:
Call Combinaciones("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
puse:
Call Combinaciones("ABC")
Y obtuve como resultado en el ListBox esto:
ABC
ACB
BAC
BCA
CAB
CBA
Faltan BBA o BCC por ejemplo, ademas, necesito que sea de 2 digitos y con todas las combinaciones... :huh:
Salu2
Antes que nada: ANTES DE 'B' SIEMPRE VA 'M', NO 'N'
Después, tu sabes lo que quieres hacer, así que por que no diseñas tu el algoritmo? Si no dominas todavía la programación supongo que si que podrás hacerlo en tu idioma (castellano), después de tener los pasos necesarios podrás imaginar como se hace programando.
Vas a ver mi comentario como uno que no ayuda, pero date cuenta que si te lo hacen no aprenderás.
Mi codigo no es muy eficiente que digamos je je je pero la intencion es la que cuenta
pero creo que puede dar una idea....solo seria para 2 y 3 digitos..para mas digitos
habria que anidar mas for..y no me atrevo pork ya colgue mi maquina y perdi mi trabajo que no he guardado... :(
CitarPrivate Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub Form_Load()
Dim abecedario(0 To 26) As String
Dim FileNum As Integer
For x = 1 To 26
abecedario(x) = Chr(96 + x)
Next x
FileNum = FreeFile
Open "C:\abecedario.txt" For Output As FileNum
For x = 1 To 26 ' con 2 digito
For y = 1 To 26
letra = letra + Trim(abecedario(y)) + Trim(abecedario(x)) + " "
Next y
letra = letra + vbCrLf
Next x
For x = 1 To 26 ' con 3 digito
For y = 1 To 26
For w = 1 To 26
letra = letra + Trim(abecedario(w)) + Trim(abecedario(y)) + Trim(abecedario(x)) + " "
Next w
Next y
letra = letra + vbCrLf
Next x
Print #FileNum, letra
ShellExecute Me.hwnd, "open", "c:\abecedario.txt", "", "", 4
Close FileNum
End Sub
Cita de: Karcrack en 13 Abril 2010, 18:36 PM
Vas a ver mi comentario como uno que no ayuda, pero date cuenta que si te lo hacen no aprenderás.
No Karcrak, entiendo lo q m dices a la perfeccion, me esforzare y lo intentare sacar por mi mismo. :)
Me podre a ello ahora que ya se por donde tirar...
Gracias a to2!
Estoy trabakando en ello, en unos dias subo el code ;-)