Python - Algoritmo de combinaciones

 
Vista:

Algoritmo de combinaciones

Publicado por Juan Cruz (1 intervención) el 02/09/2018 02:24:14
Hola, soy alumno de primer año de ingeniería en sistema así que soy bastante nuevo en programacion, se me ocurrio un problema que me esta dando vueltas y no se me ocurre un programa para resolverlo, la cosa es asi, quiero una funcion o programa al cual yo ingresandole un numero, supongamos 5, encuentre todas las posibles combinaciones de 5 letras que existan, incluyendo en el cual se repite la letra como "aaaaa"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Algoritmo de combinaciones

Publicado por algoritmo (245 intervenciones) el 02/09/2018 19:03:10
Te adjunto código para encontrar las Variaciones con Repetición (importa el orden)
Espero que te sirva :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
n = int(raw_input('Ingrese numero'))
 
vector = []
for i in range(1, n+1):
	vector.append('A')
print vector
contador = 1
 
def desarrolla(vector):
	# la paso un vector y tiene que desarrollar
	# todas las posibilidades, cambiando SOLO el valor del último
	# con valores posteriores al último
	global contador
	for a in range(65, 91):
		if chr(a) <= vector[n-1]:
			continue
		vector[n-1] = chr(a)
		contador += 1
		print vector
 
 
def aumenta_uno(i):
	global contador
	# HAY QUE AUMENTAR EN UN PUNTO EL VALOR DEL ORDEN i
	for t in range(i+1, n):
		vector[t] = 'A'     # comienza de nuevo el los de orden siguiente
 
	if vector[i] == 'Z':
		if i == 0:
			print 'PROCESO FINALIZADO'
			return
		# ha llegado al final. Reinicia el orden i y aumenta uno en el (i-1)
		vector[i] = 'A'
		aumenta_uno(i-1)
	else:
		# aumenta en uno
		vector[i] = chr(ord(vector[i])+1)
		contador += 1
		print vector
 
 
while True:
	desarrolla(vector)
	cambio = False
	for t in range(n-1, -1, -1):
		if vector[t] != 'Z':
			# aumenta un punto en el primero que no sea Z
			# contando de derecha a izquierda
			aumenta_uno(t)
			cambio = True
			break   # sale del bucle for
 
	if not cambio:
		break
 
 
 
print 'Total Variaciones con Repeticion: %s' % contador
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar