Order two numerical lists: Difference between revisions
Content added Content deleted
(Added Algol W) |
(Added solution for Action!) |
||
Line 182: | Line 182: | ||
ACL2 !>(lexorder '(1 2 4) '(1 2 3)) |
ACL2 !>(lexorder '(1 2 4) '(1 2 3)) |
||
NIL</pre> |
NIL</pre> |
||
=={{header|Action!}}== |
|||
<lang Action!>INT FUNC Compare(INT ARRAY x INT xLen INT ARRAY y INT yLen) |
|||
INT i,len |
|||
len=xLen |
|||
IF len>yLen THEN |
|||
len=yLen |
|||
FI |
|||
FOR i=0 TO len-1 |
|||
DO |
|||
IF x(i)>y(i) THEN |
|||
RETURN (1) |
|||
ELSEIF x(i)<y(i) THEN |
|||
RETURN (-1) |
|||
FI |
|||
OD |
|||
IF xLen>yLen THEN |
|||
RETURN (1) |
|||
ELSEIF xLen<yLen THEN |
|||
RETURN (-1) |
|||
FI |
|||
RETURN (0) |
|||
BYTE FUNC Less(INT ARRAY x INT xLen INT ARRAY y INT yLen) |
|||
IF Compare(x,xLen,y,yLen)<0 THEN |
|||
RETURN (1) |
|||
FI |
|||
RETURN (0) |
|||
PROC PrintArray(INT ARRAY x INT len) |
|||
INT i |
|||
Put('[) |
|||
FOR i=0 TO len-1 |
|||
DO |
|||
PrintI(x(i)) |
|||
IF i<len-1 THEN |
|||
Put(' ) |
|||
FI |
|||
OD |
|||
Put(']) |
|||
RETURN |
|||
PROC Test(INT ARRAY x INT xLen INT ARRAY y INT yLen) |
|||
PrintArray(x,xLen) |
|||
IF Less(x,xLen,y,yLen) THEN |
|||
Print(" < ") |
|||
ELSE |
|||
Print(" >= ") |
|||
FI |
|||
PrintArray(y,yLen) PutE() |
|||
RETURN |
|||
PROC Main() |
|||
INT ARRAY a=[1 2 1 5 2] |
|||
INT ARRAY b=[1 2 1 5 2 2] |
|||
INT ARRAY c=[1 2 3 4 5] |
|||
INT ARRAY d=[1 2 3 4 5] |
|||
Test(a,5,b,6) |
|||
Test(b,6,a,5) |
|||
Test(b,6,c,5) |
|||
Test(c,5,b,6) |
|||
Test(c,5,d,5) |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Order_two_numerical_lists.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
[1 2 1 5 2] < [1 2 1 5 2 2] |
|||
[1 2 1 5 2 2] >= [1 2 1 5 2] |
|||
[1 2 1 5 2 2] < [1 2 3 4 5] |
|||
[1 2 3 4 5] >= [1 2 1 5 2 2] |
|||
[1 2 3 4 5] >= [1 2 3 4 5] |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |