""" Nathan Lasseter (@User_4574) and Christopher Baldrey Usage: python debruijn.py or python debruijn.py """ from itertools import product from sys import argv def tupeq(tup1, tup2): return tup1[1:] == tup2[:n-1] def tostring(tup): return ''.join([str(x) for x in tup]) if (len(argv) > 1): n = int(argv[1]) else: n=3 perms = [p for p in product(range(1, (n+1)), repeat=n)] kitten = [perms.pop()] while perms: l = [item for item in perms if tupeq(kitten[-1], item)][0] kitten.append(l) perms.remove(l) kitten.reverse() k = kitten.pop() finalstring = tostring(k) while kitten: k = kitten.pop() finalstring += tostring(k)[-1:] print finalstring