f=lambda s,r='',c='':f(s[1:],*{'B':(r[:-1],c),'C':(r,r),'D':('',c),'P':(r+c,c),'':(r+s[0],c)}[s[0][1:2]])if s else r
tests = [
['H', 'e', 'l', 'l', 'o'],
['H', 'e', 'l', 'l', 'o', ' ', '[C]', '[P]'],
['[D]', 'D', '[B]'],
[''],
['e', '[C]', '[B]', 'I', ' ', 'l', 'i', 'k', '[P]', ' ', 'b', '[P]', '[P]', 's', '!'],
['N', '[P]'],
['#', '5', '0', 'K', '0', '0', '1', '[D]', '#', 'n', 'o', 't']]
note = '* Note: output is repr(f(input)), to quote the string for clarity *'
border1 = '*'*len(note)+'\n'
border2 = '*'+' '*(len(note)-2)+'*'+'\n'
print border1+border2+note+'\n'+border2+border1
for test in tests:
print 'Input:', test
print 'Output:', repr(f(test))
print ''
Zj1sYW1iZGEgcyxyPScnLGM9Jyc6ZihzWzE6XSwqeydCJzoocls6LTFdLGMpLCdDJzoocixyKSwnRCc6KCcnLGMpLCdQJzoocitjLGMpLCcnOihyK3NbMF0sYyl9W3NbMF1bMToyXV0paWYgcyBlbHNlIHIKCnRlc3RzID0gWwoJWydIJywgJ2UnLCAnbCcsICdsJywgJ28nXSwKCVsnSCcsICdlJywgJ2wnLCAnbCcsICdvJywgJyAnLCAnW0NdJywgJ1tQXSddLAoJWydbRF0nLCAnRCcsICdbQl0nXSwKCVsnJ10sCglbJ2UnLCAnW0NdJywgJ1tCXScsICdJJywgJyAnLCAnbCcsICdpJywgJ2snLCAnW1BdJywgJyAnLCAnYicsICdbUF0nLCAnW1BdJywgJ3MnLCAnISddLAoJWydOJywgJ1tQXSddLAoJWycjJywgJzUnLCAnMCcsICdLJywgJzAnLCAnMCcsICcxJywgJ1tEXScsICcjJywgJ24nLCAnbycsICd0J11dCm5vdGUgPSAnKiBOb3RlOiBvdXRwdXQgaXMgcmVwcihmKGlucHV0KSksIHRvIHF1b3RlIHRoZSBzdHJpbmcgZm9yIGNsYXJpdHkgKicKYm9yZGVyMSAgPSAnKicqbGVuKG5vdGUpKydcbicKYm9yZGVyMiA9ICcqJysnICcqKGxlbihub3RlKS0yKSsnKicrJ1xuJwpwcmludCBib3JkZXIxK2JvcmRlcjIrbm90ZSsnXG4nK2JvcmRlcjIrYm9yZGVyMQpmb3IgdGVzdCBpbiB0ZXN0czoKCXByaW50ICdJbnB1dDonLCB0ZXN0CglwcmludCAnT3V0cHV0OicsIHJlcHIoZih0ZXN0KSkKCXByaW50ICcn
*******************************************************************
* *
* Note: output is repr(f(input)), to quote the string for clarity *
* *
*******************************************************************
Input: ['H', 'e', 'l', 'l', 'o']
Output: 'Hello'
Input: ['H', 'e', 'l', 'l', 'o', ' ', '[C]', '[P]']
Output: 'Hello Hello '
Input: ['[D]', 'D', '[B]']
Output: ''
Input: ['']
Output: ''
Input: ['e', '[C]', '[B]', 'I', ' ', 'l', 'i', 'k', '[P]', ' ', 'b', '[P]', '[P]', 's', '!']
Output: 'I like bees!'
Input: ['N', '[P]']
Output: 'N'
Input: ['#', '5', '0', 'K', '0', '0', '1', '[D]', '#', 'n', 'o', 't']
Output: '#not'