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}}==