elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Como puedo tener todas las combinaciones de letras?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como puedo tener todas las combinaciones de letras?  (Leído 8,897 veces)
Pregma Sogma

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Como puedo tener todas las combinaciones de letras?
« en: 24 Enero 2017, 00:05 am »


Hola me gustarian que me ayuden porque quisiera hacer un programa en python que haga todas las combinaciones de letras del abcdario castellano A la Z y los numeros 0 al 9.

Pero lo que yo hago en python no me funciona y me gustaria tener ese programa que haga todas las combinaciones de letras y numeros.........gracias


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como puedo tener todas las combinaciones de letras?
« Respuesta #1 en: 24 Enero 2017, 00:08 am »

explica "todas las combinaciones" da 3 ejemplos a ver


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Yidu

Desconectado Desconectado

Mensajes: 133


Ver Perfil
Re: Como puedo tener todas las combinaciones de letras?
« Respuesta #2 en: 25 Enero 2017, 19:31 pm »

No estaria de mas que revisaras el modulo itertools. No se tu nivel de programacion y pretender crear un algoritmo de este tipo sin usar modulos lo veo complicado.

Si quieres crear las combinaciones en grupos de tres, por ejemplo, sera asi:

Código
  1. from itertools import combinations
  2. numeros = range(0, 10)
  3. for x in combinations(numeros, 3):
  4. print(x)
  5.  

Salida:

(0, 1, 2)
(0, 1, 3)
(0, 1, 4)
(0, 1, 5)
(0, 1, 6)
(0, 1, 7)
(0, 1, 8)
(0, 1, 9)
(0, 2, 3)
(0, 2, 4)
(0, 2, 5)
(0, 2, 6)
(0, 2, 7)
(0, 2, 8)
(0, 2, 9)
(0, 3, 4)
(0, 3, 5)
(0, 3, 6)
(0, 3, 7)
(0, 3, 8)
(0, 3, 9)
(0, 4, 5)
(0, 4, 6)
(0, 4, 7)
(0, 4, 8)
(0, 4, 9)
(0, 5, 6)
(0, 5, 7)
(0, 5, 8)
(0, 5, 9)
(0, 6, 7)
(0, 6, 8)
(0, 6, 9)
(0, 7, 8)
(0, 7, 9)
(0, 8, 9)
(1, 2, 3)
(1, 2, 4)
(1, 2, 5)
(1, 2, 6)
(1, 2, 7)
(1, 2, 8)
(1, 2, 9)
(1, 3, 4)
(1, 3, 5)
(1, 3, 6)
(1, 3, 7)
(1, 3, 8)
(1, 3, 9)
(1, 4, 5)
(1, 4, 6)
(1, 4, 7)
(1, 4, 8)
(1, 4, 9)
(1, 5, 6)
(1, 5, 7)
(1, 5, 8)
(1, 5, 9)
(1, 6, 7)
(1, 6, 8)
(1, 6, 9)
(1, 7, 8)
(1, 7, 9)
(1, 8, 9)
(2, 3, 4)
(2, 3, 5)
(2, 3, 6)
(2, 3, 7)
(2, 3, 8)
(2, 3, 9)
(2, 4, 5)
(2, 4, 6)
(2, 4, 7)
(2, 4, 8)
(2, 4, 9)
(2, 5, 6)
(2, 5, 7)
(2, 5, 8)
(2, 5, 9)
(2, 6, 7)
(2, 6, 8)
(2, 6, 9)
(2, 7, 8)
(2, 7, 9)
(2, 8, 9)
(3, 4, 5)
(3, 4, 6)
(3, 4, 7)
(3, 4, 8)
(3, 4, 9)
(3, 5, 6)
(3, 5, 7)
(3, 5, 8)
(3, 5, 9)
(3, 6, 7)
(3, 6, 8)
(3, 6, 9)
(3, 7, 8)
(3, 7, 9)
(3, 8, 9)
(4, 5, 6)
(4, 5, 7)
(4, 5, 8)
(4, 5, 9)
(4, 6, 7)
(4, 6, 8)
(4, 6, 9)
(4, 7, 8)
(4, 7, 9)
(4, 8, 9)
(5, 6, 7)
(5, 6, 8)
(5, 6, 9)
(5, 7, 8)
(5, 7, 9)
(5, 8, 9)
(6, 7, 8)
(6, 7, 9)
(6, 8, 9)
(7, 8, 9)

Aunque debes tener cuidado de cuantos grupos de numeros quieres las combinacion. Ya que podria tardar bastante el proceso. Y con la letras es parecido. De todas formas no se si confundes permutaciones con combinaciones.
Deberias, entonces, cambiar el codigo asi:

Código
  1. from itertools import permutations
  2. numeros = range(0, 10)
  3. for x in permutations(numeros, 3):
  4. print(x)
  5.  

En línea

explorer

Desconectado Desconectado

Mensajes: 102


Analista/Programador Perl


Ver Perfil
Re: Como puedo tener todas las combinaciones de letras?
« Respuesta #3 en: 28 Enero 2017, 18:04 pm »

A mi me salen muchas combinaciones...

Código:
$ perl6 -e 'my @a = ("A".."Z", 0..9).flat; say (@a X @a X @a).elems'
46656
En línea

Yidu

Desconectado Desconectado

Mensajes: 133


Ver Perfil
Re: Como puedo tener todas las combinaciones de letras?
« Respuesta #4 en: 29 Enero 2017, 11:39 am »

A mi me salen muchas combinaciones...

Código:
$ perl6 -e 'my @a = ("A".."Z", 0..9).flat; say (@a X @a X @a).elems'
46656

Bueno...a eso se le llama explosion combinatoria. Dependiendo el conjunto de numeros o letras que queramos combinar, el asunto se hace inabordable. Incluso si queremos almacenar dichas combinaciones en algun fichero. Creo que no tardaria mucho en llenarse el disco duro.

En el ejemplo que puse con 10 numeros en grupos de 3 salen 120 combinaciones.
En línea

Pregma Sogma

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Como puedo tener todas las combinaciones de letras?
« Respuesta #5 en: 31 Enero 2017, 00:37 am »

Yidu el codigo que me diste me funciono muy bien pero...hay alguna manera de cambiar la cantidad de numeros que podrian haber en un grupo por ejemplo:
Que cuando el programa genere una combinacion de numeros y letras en un grupo y termine agregue otron digito osea:
A
B
C
D
...
X
Y
Z
1
2
3
4
...
9
Y que cuando termine de hacer todas las combinaciones le agregue un 2 a la cantidad de digitos en un grupo...entonces:
AA
AB
AC
AD
...
AX
AY
AZ
A1
A2
A3
...
A9
Y Luego seria:
BA
BB
BC
BD
...
BX
BY
BZ
...
Etc.. Osea que cada vez que termine agregue otro digito al grupo y que haya un if que pare el programa en ZZZ9....espero tu respuesta
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como puedo tener todas las combinaciones de letras?
« Respuesta #6 en: 31 Enero 2017, 00:43 am »

un for y en lugar del 3, la variable del for...

estás claro que si usas 7 digitos o más, tardará dias y si los guardas, llenarás tu discoduro verdad?

ten en cuenta que la formula de cantidad de combinaciones es

charsetcantidad digitos

charset = (la cantidad de elementos a usar, si son letras de "A" a la "Z" son 26)

así que 7 digitos son 8.031.810.176 combinaciones a 8 bytes por cada una... son 59Gb

generar letras continuas nunca es buena idea para nada...


es decir, que quieres hacer con esto?
« Última modificación: 31 Enero 2017, 00:48 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Yidu

Desconectado Desconectado

Mensajes: 133


Ver Perfil
Re: Como puedo tener todas las combinaciones de letras?
« Respuesta #7 en: 31 Enero 2017, 19:06 pm »

Yo soy de la misma idea que engel lex. Lo suyo es saber bien que quieres hacer y profundizar mas en el tema de los bucles e iteradores. La gracia y morbo de la programacion, es crearte pequeños retos para luego superarlos. Y creeme, es mas gratificante. Si te dan el codigo hecho no crearas esos mecanismos propios para la resolucion de problemas. Aunque yo tambien, a veces, he preguntado cosas en los foros. Y cuando me han dado la solucion, no tiene tanta gracia que cuando uno la consigue por si mismo. Pero claro, un pequeña ayuda siempre es necesaria.

Te pongo un enlace dondo tocan estos temas. Sobre el modulo itertools. Por cierto, mirate bien dicho blog que es oro puro sobre python. Casi, una guia de referencia.

http://python-para-impacientes.blogspot.com.es/2015/08/bucles-eficientes-con-itertools.html
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines