Решение с пользовательским фильтром
from itertools import permutations
a="3212323"
def my_filter(temp):
if '33' not in ''.join(temp):
return temp
filter(my_filter,(permutations(a)))
Это Python, так что вы можете увидеть исходный код и изменить его
def permutations1(iterable, r=None):
# permutations('ABCD', 2) --> AB AC AD BA BC BD CA CB CD DA DB DC
# permutations(range(3)) --> 012 021 102 120 201 210
pool = tuple(iterable)
n = len(pool)
r = n if r is None else r
if r > n:
return
indices = range(n)
cycles = range(n, n-r, -1)
yield tuple(pool[i] for i in indices[:r])
while n:
for i in reversed(range(r)):
cycles[i] -= 1
if cycles[i] == 0:
indices[i:] = indices[i+1:] + indices[i:i+1]
cycles[i] = n - i
else:
j = cycles[i]
indices[i], indices[-j] = indices[-j], indices[i]
temp=tuple(pool[i] for i in indices[:r])
if '33' not in ''.join(temp):
yield temp
break
else:
return
list((permutations1(a)))