fork(3) download
  1. # (c) http://stackoverflow.com/a/16479607
  2. import itertools as it
  3.  
  4. def func(s, digits=['',' ']):
  5. if not s: return [s]
  6. binary = it.product(digits, repeat=len(s)-1)
  7. zipped = (it.zip_longest(s , comb, fillvalue='') for comb in binary)
  8. return [''.join(it.chain.from_iterable(x)) for x in zipped]
  9.  
  10. from pprint import pprint
  11. s = input()
  12. pprint(func(s))
  13. pprint(func(" "*len(s), "01"))
Success #stdin #stdout 0.07s 10144KB
stdin
foobar
stdout
['foobar',
 'fooba r',
 'foob ar',
 'foob a r',
 'foo bar',
 'foo ba r',
 'foo b ar',
 'foo b a r',
 'fo obar',
 'fo oba r',
 'fo ob ar',
 'fo ob a r',
 'fo o bar',
 'fo o ba r',
 'fo o b ar',
 'fo o b a r',
 'f oobar',
 'f ooba r',
 'f oob ar',
 'f oob a r',
 'f oo bar',
 'f oo ba r',
 'f oo b ar',
 'f oo b a r',
 'f o obar',
 'f o oba r',
 'f o ob ar',
 'f o ob a r',
 'f o o bar',
 'f o o ba r',
 'f o o b ar',
 'f o o b a r']
[' 0 0 0 0 0 ',
 ' 0 0 0 0 1 ',
 ' 0 0 0 1 0 ',
 ' 0 0 0 1 1 ',
 ' 0 0 1 0 0 ',
 ' 0 0 1 0 1 ',
 ' 0 0 1 1 0 ',
 ' 0 0 1 1 1 ',
 ' 0 1 0 0 0 ',
 ' 0 1 0 0 1 ',
 ' 0 1 0 1 0 ',
 ' 0 1 0 1 1 ',
 ' 0 1 1 0 0 ',
 ' 0 1 1 0 1 ',
 ' 0 1 1 1 0 ',
 ' 0 1 1 1 1 ',
 ' 1 0 0 0 0 ',
 ' 1 0 0 0 1 ',
 ' 1 0 0 1 0 ',
 ' 1 0 0 1 1 ',
 ' 1 0 1 0 0 ',
 ' 1 0 1 0 1 ',
 ' 1 0 1 1 0 ',
 ' 1 0 1 1 1 ',
 ' 1 1 0 0 0 ',
 ' 1 1 0 0 1 ',
 ' 1 1 0 1 0 ',
 ' 1 1 0 1 1 ',
 ' 1 1 1 0 0 ',
 ' 1 1 1 0 1 ',
 ' 1 1 1 1 0 ',
 ' 1 1 1 1 1 ']