﻿ Python permutations generator: Generate all string permutations

# Python permutations generator: Generate all string permutations

## Python: Generators Yield Exercise-11 with Solution

Write a Python program to create a generator that generates all possible permutations of a string.

Sample Solution:

Python Code:

``````def string_permutations(string):
if len(string) <= 1:
yield string
else:
for i in range(len(string)):
current_char = string[i]
remaining_chars = string[:i] + string[i+1:]
for permutation in string_permutations(remaining_chars):
yield current_char + permutation

# Accept input from the user
input_string = input("Input a string: ")

# Create the string permutations generator
permutations_gen = string_permutations(input_string)

# Generate and print all permutations
print("All permutations of", input_string + ":")
for permutation in permutations_gen:
print(permutation, end = ", ")
``````

Sample Output:

```Input a string: abc
All permutations of abc:
abc, acb, bac, bca, cab, cba,
```
```Input a string: print
All permutations of print:
print, pritn, prnit, prnti, prtin, prtni, pirnt, pirtn, pinrt, pintr, pitrn, pitnr, pnrit, pnrti, pnirt, pnitr, pntri, pntir, ptrin, ptrni, ptirn, ptinr, ptnri, ptnir, rpint, rpitn, rpnit, rpnti, rptin, rptni, ripnt, riptn, rinpt, rintp, ritpn, ritnp, rnpit, rnpti, rnipt, rnitp, rntpi, rntip, rtpin, rtpni, rtipn, rtinp, rtnpi, rtnip, iprnt, iprtn, ipnrt, ipntr, iptrn, iptnr, irpnt, irptn, irnpt, irntp, irtpn, irtnp, inprt, inptr, inrpt, inrtp, intpr, intrp, itprn, itpnr, itrpn, itrnp, itnpr, itnrp, nprit, nprti, npirt, npitr, nptri, nptir, nrpit, nrpti, nript, nritp, nrtpi, nrtip, niprt, niptr, nirpt, nirtp, nitpr, nitrp, ntpri, ntpir, ntrpi, ntrip, ntipr, ntirp, tprin, tprni, tpirn, tpinr, tpnri, tpnir, trpin, trpni, tripn, trinp, trnpi, trnip, tiprn, tipnr, tirpn, tirnp, tinpr, tinrp, tnpri, tnpir, tnrpi, tnrip, tnipr, tnirp,
```

Explanation:

In the above exercise,

• The string_permutations generator function generates all possible permutations of a given string.
• It uses recursive logic to generate permutations.
• If the string length is less than or equal to 1, it yields the string itself. Otherwise, it iterates over each character in the string.
• For each character, it generates all permutations of the remaining characters by calling the string_permutations function recursively.
• It yields the current character concatenated with each permutation.
• Next the program accepts a string from the user. It then creates the string_permutations generator using the input string.

Finally, it iterates over the generator and prints all the permutations of the input string.

Flowchart:

Python Code Editor: