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.