# Generates all length-3 words with symbols taken from the given alphabet. def genWords3(symbols): return [ x+y+z for x in symbols for y in symbols for z in symbols ] # Generates all length-n words with symbols taken from the given alphabet. def genWords(symbols, n): if n == 0: return [''] lista = genWords(symbols, n-1) return [ x+y for x in symbols for y in lista ] def main(): lstA = genWords3("abc") print(lstA) lstB = genWords("abc", 3) # should return the same words, maybe in other order print(lstB) assert sorted(lstA) == sorted(lstB) print(genWords("ab", 1)) print(genWords("ab", 0)) lstC = genWords("01", 4) # should return all length-4 binary words print(lstC) if __name__ == "__main__": main()