Problem 42816. Sorting integers by their digits (Level 4)
This is the next step up from Problem 42815.
Given a vector, v, of complex numbers (negative or positive), return a vector, w, by sorting v in ascending order, such that primary sorting is done by the first digit (representing the largest value), secondary sorting by the second digit (next largest value), and so on.
Once all real digits have been used for sorting, it should continue with the imaginary part, which are further down the order.
Example:
v = [14.38 210+69i 80.42 3.14 0-15i 268 -14.38 210+64i 0+15i 1 80.44];
w = [0-15i 0+15i 1 -14.38 14.38 210+64i 210+69i 268 3.14 80.42 80.44];
As shown above, in cases of multiple numbers starting with the same digits, such as 1 and 14.38, shorter numbers take precedence.
Negative numbers take precedence over positive numbers.
Imaginary numbers should be treated as if they had a leading zero, because they have a zero real part.
Solution Stats
Problem Comments
-
3 Comments
An interesting series of sorting problems, ranging from integer to floating point numbers, and from real-valued to complex numbers.
This sort series problem are interesting and also challeging, and for solving this series, regular expression, string, data index and function, etc. all kinds of skill are required. learned a lot, thx!
@Bainhome Absolutely agree!...A very interesting series for both the aficionados and virtuoso. Sure we all had fun. :) Thanks HH.
Solution Comments
Show commentsProblem Recent Solvers37
Suggested Problems
-
Remove any row in which a NaN appears
8587 Solvers
-
Find the alphabetic word product
3324 Solvers
-
1270 Solvers
-
Make a run-length companion vector
638 Solvers
-
832 Solvers
More from this Author45
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!