Il existe plusieurs façons de procéder. Les méthodes courantes utilisent la récursivité, la mémorisation ou la programmation dynamique. L'idée de base est que vous produisez une liste de toutes les chaînes de longueur 1, puis à chaque itération, pour toutes les chaînes produites lors de la dernière itération, ajoutez cette chaîne concaténée avec chaque caractère de la chaîne individuellement. (l'index de la variable dans le code ci-dessous garde une trace du début de la dernière et de la prochaine itération)
Un pseudo-code :
list = originalString.split('')
index = (0,0)
list = ["]
for iteration n in 1 to y:
index = (index[1], len(list))
for string s in list.subset(index[0] to end):
for character c in originalString:
list.add(s + c)
vous devrez alors supprimer toutes les chaînes de moins de x de longueur, ce seront les premières entrées (x-1) * len(originalString) de la liste.