I would like to generate words sentence with given length. Here i would like to get output without any repeat of characters or words.
With current code i am receiving outputs
example example example example example
example example example example example2
example example example example example3
example example example example example4
example example example example example5
example example example example example6
example example example example example7
example example example example example8
example example example example example9
example example example example2 example
example example example example2 example2
But i would like to receive output with random words as without any word repeated in sentence
example example1 example2 example3 example4
example1 example2 example3 example4 example5
example5 example1 example2 example3 example4
example6 example4 example2 example5 example1
Here is the code
import numpy as np
# Python 3 program to print all
# possible strings of length k
# The method that prints all
# possible strings of length k.
# It is mainly a wrapper over
# recursive function printAllKLengthRec()
def printAllKLength(set, k):
n = len(set)
printAllKLengthRec(set, "", n, k)
# The main recursive method
# to print all possible
# strings of length k
def printAllKLengthRec(set, prefix, n, k):
# Base case: k is 0,
# print prefix
if (k == 0) :
print(prefix)
return
# One by one add all characters
# from set and recursively
# call for k equals to k-1
for i in range(n):
# Next character of input added
newPrefix = prefix + set[i]
# k is decreased, because
# we have added a new character
printAllKLengthRec(set, newPrefix, n, k - 1)
# Driver Code
if __name__ == "__main__":
print("\nSecond Test")
set2 = ['example ', 'example2 ', 'example3 ', 'example4 ', 'example5 ', 'example6 ', 'example7 ', 'example8 ', 'example9 ']
k = 5
printAllKLength(set2, k)
# This code is contributed
# by ChitraNayal
You just have to keep track of the characters you haven't used in your set, so you don't repeat them. Here I have a list comprehension called remaining_char:
def printAllKLength(set, k):
n = len(set)
printAllKLengthRec(set, "", n, k)
def printAllKLengthRec(set, prefix, n, k):
if (k == 0):
print(prefix)
return
remaining_char = [char for char in set if char not in prefix]
for i in range(len(remaining_char)):
newPrefix = prefix + remaining_char[i]
printAllKLengthRec(set, newPrefix, n, k - 1)