Python | Word Stretch - GeeksforGeeks

01 Jul, 2021
Write a program to get all possibilities (in sorted order) for stretching a word to the given size. If the list of required indices is passed, then only those combinations present at those indices should be returned. If the required indices are null, then all the combinations have to be returned.Examples:  
Input:
str = "1234"  
n = 6 
indices = null 

Output: 
["111234", "112234", "112334", "112344", "122234",
 "122334", "122344", "123334", "123344", "123444"] 

The above string  “1234”, with stretch length can be stretched for different possibilities
like "111234", "112334", "112344" etc. The output represents a list of 
different stretches in a sorted manner. Since the indices are given as
null we print the entire list of possibilities 

Input:  
str = "1234"
n = 6 
indices = 1, 5, 9 
Output: 
["112234", "122334", "123444"]
 
Here only stretched strings of given indices are printed. 

Input: 
str = "merit"  
n = 6 
indices = null 
Output: 
["meerit", "meriit", "meritt", "merrit", "mmerit"] 

Input: 
str = "java"  
n = 4 
indices = null 
Output: ["java"] 

Input : 
str = "geeksforgeeks"
n = 10 
indices = null 
Output: 
[] 

since the length of the string is greater than 
the length to be stretched we return an empty index
Code : Python code for get all possibilities for stretching a word to the given size.  
Python3
# function which stretches the word def WordStretch(s, n, indices) :    res, index, result, final = [], [], [], []     # check for corner case    if n < len(s) :        print([])     # check for corner case             elif n == len(s) :        print([s])     else :         # since the word should be stretched        # to n terms which include the length        temp = n-len(s)                 for i in range(len(s)):            for j in range(i, len(s)):                                 if i == j :                    l = temp * s[j]                    m = s[:j] + l + s[j:]                    result.append(m)                 else :                    l = (temp-1) * s[j]                    m = s[:j] + l + s[j:]                    # here we convert the string into list                    # and again list into string after inserting                    # the element in the list                    t =[]                    for p in m :                        t.append(p)                    t.insert(i, s[i])                    result.append("".join(t))         # to sort the elements        result.sort()         # to remove the duplicate elements                 for i in result :            if i not in final :                final.append(i)         # to print the entire list               if indices == 'null' :            print(result)                     # to print particular indices           else :                  index = list(map(int, indices.split()))            for i in index :                res.append(final[i])            print(res)         # drive codes = "1234"n = 6x = "null"WordStretch(s, n, x)
Output:  
['111234', '112234', '112334', '112344', '122234', 
'122334', '122344', '123334', '123344', '123444']
 
nidhi_biet
surinderdawra388
Python
Python Programs
Python-Quizzes
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Install PIP on Windows ?
Check if element exists in list in Python
How To Convert Python Dictionary To JSON?
How to drop one or multiple columns in Pandas Dataframe
Python Classes and Objects
Defaultdict in Python
Python | Get dictionary keys as a list
Python | Split string into list of characters
Python | Convert a list to dictionary
How to print without newline in Python?