Order two numerical lists: Difference between revisions

→‎{{header|J}}: focus on numeric lists and ensure length one vector and scalar are treated the same
(→‎{{header|J}}: focus on numeric lists and ensure length one vector and scalar are treated the same)
Line 583:
=={{header|J}}==
 
This is not aJ's built-in incomparator Joperates element-wise.
To compare general sequences you can either box them and use sort.
Or for numeric sequences append minus infinity and sort.
However numeric scalars sort ahead of vectors, i.e. are different from length one lists.
 
<lang j>before=: -.@(-: /:~)@,&<~</lang>
 
<lang j>cmp=: {.@\:@,:&(,&__)</lang>
Example use:
 
Below demonstrates non-decreasing order cmp treats length one vector same as scalar
<lang j> (,0) before ''
 
0
1</lang j>
'' before ''
cmp&.>"{~ ('';0;(,0);1;(,1);1 1)
0
┌─┬─┬─┬─┬─┬─┐
'' before ,0
│0│1│1│1│1│1│
1
├─┼─┼─┼─┼─┼─┤
(,_1) before ,0
│0│0│0│1│1│1│
1
├─┼─┼─┼─┼─┼─┤
(,0) before ,0
│0│0│0│1│1│1│
0
├─┼─┼─┼─┼─┼─┤
(,0) before ,_1
│0│0│0│0│0│1│
0
├─┼─┼─┼─┼─┼─┤
(,0) before 0 _1
│0│0│0│0│0│1│
1
├─┼─┼─┼─┼─┼─┤
(,0) before 0 0
│0│0│0│0│0│0│
1
└─┴─┴─┴─┴─┴─┘
(,0) before 0 1
 
1
before&.>"{~ (0;1;'';(,0);(,1);1 1)
0 _1 before ,0
┌─┬─┬─┬─┬─┬─┐
0
│0│1│1│1│1│1│
0 0 before ,0
├─┼─┼─┼─┼─┼─┤
0
│0│0│1│1│1│1│
0 0 before ,1
├─┼─┼─┼─┼─┼─┤
1
│0│0│0│1│1│1│
├─┼─┼─┼─┼─┼─┤
(,'b') before ''
│0│0│0│0│1│1│
0
├─┼─┼─┼─┼─┼─┤
'' before ''
│0│0│0│0│0│1│
0
├─┼─┼─┼─┼─┼─┤
'' before ,'b'
│0│0│0│0│0│0│
1
└─┴─┴─┴─┴─┴─┘</lang>
(,'a') before ,'b'
1
(,'b') before ,'b'
0
(,'b') before ,'a'
0
(,'b') before 'ba'
1
(,'b') before 'bb'
1
(,'b') before 'bc'
1
'ba' before ,'b'
0
'bb' before ,'b'
0
'bb' before ,'c'
1</lang>
 
=={{header|Java}}==
Anonymous user