HackerRank Python: itertools.permutations() Solution

Table of Contents

Question

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

                        
				
			
  1. First, we import the permutations function from the itertools module. This function generates permutations of elements from an iterable.

  2. 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, and k, which represents the size of the permutations.

  3. The value of k is converted to an integer using the int() function to ensure it is a numerical value.

  4. The permutations function is called with the sorted characters of the string S and the value of k as arguments. This generates an iterator that produces all possible permutations of size k from the characters of S. Sorting the characters ensures that the permutations are produced in lexicographic sorted order.

  5. 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.

  6. The resulting string is printed, representing one possible permutation of size k of the original string S.

  7. 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.

Sharing Is Caring:

Leave a Comment