I was trying to write code in python to generate all permutations of an input string.
inp = raw_input()
out = [inp[0]]
for i in range(1,len(inp)):
#print [range(len(j)+1) for j in out]
out = [j[:k]+inp[i]+j[k:] for k in range(len(j)+1) for j in out]
print out
For an input 'abc', it outputs
Traceback (most recent call last): File "perm.py", line 6, in
out = [j[:k]+inp[i]+j[k:] for k in range(len(j)+1) for j in out]
NameError: name 'j' is not defined
shell returned 1
If I uncomment line 5, and the code looks like
inp = raw_input()
out = [inp[0]]
for i in range(1,len(inp)):
print [range(len(j)+1) for j in out]
out = [j[:k]+inp[i]+j[k:] for k in range(len(j)+1) for j in out]
print out
For an input 'abc', it outputs
[[0, 1]]
[[0, 1, 2], [0, 1, 2]]
['cba', 'cab', 'bca', 'acb', 'bac','abc']
What sorcery is this?