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 Solvers15
Suggested Problems
-
Return unique values without sorting
921 Solvers
-
Matrix with different incremental runs
500 Solvers
-
319 Solvers
-
418 Solvers
-
1116 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!