Generating all ordered substrings of a string

girish at it.usyd.edu.au girish at it.usyd.edu.au
Tue Jul 11 05:20:09 EDT 2006


Hi,
 I want to generate all non-empty substrings of a string of length >=2.
Also,
each substring is to be paired with 'string - substring' part and vice
versa.
 Thus, ['abc'] gives me [['a', 'bc'], ['bc', 'a'], ['ab', 'c'], ['c',
'ab'], ['b', 'ac'], ['ac', 'b']] etc.
 Similarly, 'abcd' should give me [['a', 'bcd'], ['bcd', 'a'], ['abc',
'd'], ['d', 'abc'], ['b', 'acd'], ['acd', 'b'],['c', 'abd'], ['abd', 'c'],
['ab', 'cd'], ['cd', 'ab'], ['bc', 'ad'], ['ad', 'bc'], ['ac',
'bd'],['bd','ac']]

 I've tried the following but i cant prevent duplicates and i'm missing
some substrings:

>>> colocn = 'abcd'
>>> k = 4
>>> for i in range(k-1):
            for j in range(1,k):
                rule1 = [colocn[i:i+j],colocn[:i]+colocn[i+j:]]
                rule2 = [colocn[:i]+colocn[i+j:],colocn[i:i+j]]
                rules.append(rule1)
                rules.append(rule2)
>>> rules
[['a', 'bcd'], ['bcd', 'a'], ['ab', 'cd'], ['cd', 'ab'], ['abc', 'd'],
['d', 'abc'], ['b', 'acd'], ['acd', 'b'], ['bc', 'ad'], ['ad', 'bc'],
['bcd', 'a'], ['a', 'bcd'], ['c', 'abd'], ['abd', 'c'], ['cd', 'ab'],
['ab', 'cd'], ['cd', 'ab'], ['ab', 'cd']]


Any ideas??

TIA,
girish



----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



More information about the Python-list mailing list