# 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()