Table of Contents
ToggleQuestion
This tool returns successive r length permutations of elements in an iterable.
If r is not specified or is None, then r defaults to the length of the iterable, and all possible full length permutations are generated.
Permutations are printed in a lexicographic sorted order. So, if the input iterable is sorted, the permutation tuples will be produced in a sorted order.
Sample Code
>>> from itertools import permutations
>>> print permutations(['1','2','3'])
<itertools.permutations object at 0x02A45210>
>>>
>>> print list(permutations(['1','2','3']))
[('1', '2', '3'), ('1', '3', '2'), ('2', '1', '3'), ('2', '3', '1'), ('3', '1', '2'), ('3', '2', '1')]
>>>
>>> print list(permutations(['1','2','3'],2))
[('1', '2'), ('1', '3'), ('2', '1'), ('2', '3'), ('3', '1'), ('3', '2')]
>>>
>>> print list(permutations('abc',3))
[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
Task
You are given a string S.
Your task is to print all possible permutations of size k of the string in lexicographic sorted order.
Input Format
A single line containing the space separated string S and the integer value k.
Constraints
0 < k <= len(S)
The string contains only UPPERCASE characters.
Output Format
Print the permutations of the string S on separate lines.
Sample Input
HACK 2
Sample Output
AC
AH
AK
CA
CH
CK
HA
HC
HK
KA
KC
KH
Explanation
All possible size 2 permutations of the string “HACK” are printed in lexicographic sorted order.
Solution
from itertools import permutations
# Input
S, k = input().split() # Splitting the input string S and integer k
k = int(k) # Converting k to an integer
# Generate permutations
perms = permutations(sorted(S), k)
# Print permutations
for perm in perms:
print(''.join(perm))
First, we import the
permutations
function from theitertools
module. This function generates permutations of elements from an iterable.The input is read using the
input()
function, which reads a line of text from the user. The line is split into two parts:S
, which represents the string, andk
, which represents the size of the permutations.The value of
k
is converted to an integer using theint()
function to ensure it is a numerical value.The
permutations
function is called with the sorted characters of the stringS
and the value ofk
as arguments. This generates an iterator that produces all possible permutations of sizek
from the characters ofS
. Sorting the characters ensures that the permutations are produced in lexicographic sorted order.Next, we iterate over each permutation in the
perms
iterator using a for loop. For each permutation, we join the characters together using the''.join(perm)
statement to create a string representation of the permutation.The resulting string is printed, representing one possible permutation of size
k
of the original stringS
.The loop continues until all permutations have been printed.
If you find anything wrong in this Solution, feel free to reach us in the comment section.