Jump to content

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
Cookies help us deliver our services. By using our services, you agree to our use of cookies.