| 1 | initial version |
Note the original function words is recursive: it calls itself.
Your new function non_rep_words should also call itself, rather than calling the old words:
def non_rep_words(alphabet,l):
if l == 0:
yield []
elif l == 1:
for a in alphabet:
yield [a]
else:
for word in non_rep_words(alphabet, l-1):
for a in alphabet:
if word[-1] != a:
yield word+[a]
Here I also corrected the case l == 1. You can avoid this case by adding an extra clause to your if statement:
def non_rep_words(alphabet,l):
if l == 0:
yield []
else:
for word in non_rep_words(alphabet, l-1):
for a in alphabet:
if len(word) == 0 or word[-1] != a:
yield word+[a]
| 2 | No.2 Revision |
Note the original function words is recursive: it calls itself.
Your new function non_rep_words should also call itself, rather than calling the old words:
def non_rep_words(alphabet,l):
if l == 0:
yield []
elif l == 1:
for a in alphabet:
yield [a]
else:
for word in non_rep_words(alphabet, l-1):
for a in alphabet:
if word[-1] != a:
yield word+[a]
Here I also corrected the case l == 1. You can could also avoid this case by adding an extra clause to your if statement:
def non_rep_words(alphabet,l):
if l == 0:
yield []
else:
for word in non_rep_words(alphabet, l-1):
for a in alphabet:
if len(word) == 0 or word[-1] != a:
yield word+[a]
| 3 | No.3 Revision |
Note the original function words is recursive: it calls itself.
Your new function non_rep_words should also call itself, rather than calling the old words:
def non_rep_words(alphabet,l):
if l == 0:
yield []
elif l == 1:
for a in alphabet:
yield [a]
else:
for word in non_rep_words(alphabet, l-1):
for a in alphabet:
if word[-1] != a:
yield word+[a]
Here I also corrected the case l == 1. You .
Note that you could also avoid this case by adding an extra clause to your if statement:
def non_rep_words(alphabet,l):
if l == 0:
yield []
else:
for word in non_rep_words(alphabet, l-1):
for a in alphabet:
if len(word) == 0 or word[-1] != a:
yield word+[a]
However this will perform many pointless comparisons to 0, so it is probably slower.
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.