Problem 43975. Permute the unique values of a vector without sorting
Given a vector A, return the matrix B, wherein each row contains a permutation of the unique values in original vector while retaining the original order of A. Permutations should operate on repeated numbers in indexed order.
For example, if A = [2 5 3 4 2 1 3], the function should return:
[2 5 3 4 1;
2 5 4 1 3;
5 3 4 2 1;
5 4 2 1 3]
This result is due to two repeated values: 2, at indices 1 & 5 and 3, at indices 3 & 7. The permutations of repeated numbers to include are then:
1 3 (i.e., remove elements at indices 5 & 7, resulting in [2 5 3 4 1])
1 7 (i.e., remove elements at indices 3 & 5, resulting in [2 5 4 1 3])
5 3 (i.e., remove elements at indices 1 & 7, resulting in [5 3 4 2 1])
5 7 (i.e., remove elements at indices 1 & 3, resulting in [5 4 2 1 3])
Solution Stats
Problem Comments
-
3 Comments
goc3
on 19 Jan 2017
The problem title and description have been improved.
yurenchu
on 27 Apr 2017
What should the behavior be when a certain value occurs three times or more in vector A? For example, when A = [2 5 3 4 2 1 3 2] (which is the same as the A in the problem description, but with another '2' added to the end), should matrix B list [5 4 2 1 3] before [5 3 4 1 2], or after?
Dyuman Joshi
on 20 Jul 2022
The problem would be more interesting with a test case having more than 2 repeating elements.
Solution Comments
Show commentsProblem Recent Solvers16
Suggested Problems
-
4291 Solvers
-
Arrange Vector in descending order
13099 Solvers
-
Find the sum of the elements in the "second" diagonal
1198 Solvers
-
Multiples of a Number in a Given Range
939 Solvers
-
Number of Even Elements in Fibonacci Sequence
1631 Solvers
More from this Author3
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!