Buenos días, tengo un algoritmo sencillo, que genera números de 012 a 978, la idea es que si creo la combinación 0,1,2, ya no repita la combinación de las otras formas como 1,0,2 o 2,1,0 o 2,0,1.
Código:
for i in range (10):
for j in range (10):
for k in range (10):
if i != j and j != k and k!=i:
print(i,j,k)
Hola, bienvenido. Siempre que pienses en "todas las combinaciones posibles" de algo, recuerda la función
itertools.permutations, pues es justamente lo que hace. Por ejemplo, para obtener todas las combinaciones posibles de los números 1, 2 y 3:
Código:
>>> import itertools
>>> list(itertools.permutations("123"))
[('1', '2', '3'), ('1', '3', '2'), ('2', '1', '3'), ('2', '3', '1'), ('3', '1','2'), ('3', '2', '1')]
Entonces ahora puedes aplicarlo a tu código:
Código:
from itertools import permutations
combinations = []
for i in range (10):
for j in range (10):
for k in range (10):
if i != j and j != k and k!=i:
item = "{}{}{}".format(i, j, k)
append = True
for combination in permutations(item):
if "".join(combination) in combinations:
append = False
break
if append:
combinations.append(item)
print(i, j, k)
Un saludo.