Sorting matrix

Posted 9 years ago
3283 Views
|
3 Replies
|
6 Total Likes
|
 Hi all again, yesterday helped me solve a problem by lists, but now I came the next problem, given following matrix {{3,25,17}, {6,27,33}, {4,29,23 }, {5,37,19}, {7,20,35}, {4,19,31}} sort according to the following condition, the second element must always be greater than the third element, in this example we {6,27,33} note that the third element is greater than the second, in this case to do an exchange to be finally {6,33,27} so is {7,20,35} and finally {4,19,31} which should be respectively {7,35,20} and {4,31,19}.and the list would look like:{{3,25,17}, {6,33,27}, {4,29,23}, {5,37,19}, {7,35,20}, {4,31,19}}thanks in advance. Keep in touch
3 Replies
Sort By:
Posted 9 years ago
 m /. {a_, b_, c_} :> If[b < c, {a, c, b}, {a, b, c}]Above is a slightly differently way of doing this. You can use the RuleDelayed to make the replacement an actual function. The advantage about this one is that all variables are local, therefore, if you happend to define "a" , your result won't de disturbed. (You can see the color of variables are different in In[44] and In[45])
Posted 9 years ago
 many thanks Ilian Gachevski for your help, you give me a lesson in the use of Rules, it is very clear.
Posted 9 years ago
 In[1]:= m = {{3, 25, 17}, {6, 27, 33}, {4, 29, 23}, {5, 37, 19}, {7, 20, 35}, {4, 19, 31}};In[2]:= m /. {a_, b_, c_} /; b < c -> {a, c, b}Out[2]= {{3, 25, 17}, {6, 33, 27}, {4, 29, 23}, {5, 37, 19}, {7, 35, 20}, {4, 31, 19}}