Find first missing positive: Difference between revisions

Added solution for Action!
(add FreeBASIC)
(Added solution for Action!)
Line 9:
*   '''output''' =   3, 2, 1
<br><br>
 
=={{header|Action!}}==
<lang Action!>BYTE FUNC Contains(INT ARRAY a INT len,x)
INT i
 
FOR i=0 TO len-1
DO
IF a(i)=x THEN
RETURN (1)
FI
OD
RETURN (0)
 
BYTE FUNC FindFirstPositive(INT ARRAY a INT len)
INT res
 
res=1
WHILE Contains(a,len,res)
DO
res==+1
OD
RETURN (res)
 
PROC PrintArray(INT ARRAY a INT len)
INT i
 
Put('[)
FOR i=0 TO len-1
DO
IF i>0 THEN Put(' ) FI
PrintI(a(i))
OD
Put('])
RETURN
 
PROC Test(CARD ARRAY arr INT ARRAY lengths INT count)
INT ARRAY a
INT i,len,first
 
FOR i=0 TO count-1
DO
a=arr(i) len=lengths(i)
PrintArray(a,len)
Print(" -> ")
first=FindFirstPositive(a,len)
PrintIE(first)
OD
RETURN
 
PROC Main()
DEFINE COUNT="5"
CARD ARRAY arr(COUNT)
INT ARRAY
lengths=[3 4 5 3 0],
a1=[1 2 0],
a2=[3 4 65535 1],
a3=[7 8 9 11 12],
a4=[65534 65530 65520]
 
arr(0)=a1 arr(1)=a2 arr(2)=a3
arr(3)=a4 arr(4)=a4
Test(arr,lengths,COUNT)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Find_first_missing_positive.png Screenshot from Atari 8-bit computer]
<pre>
[1 2 0] -> 3
[3 4 -1 1] -> 2
[7 8 9 11 12] -> 1
[-2 -6 -16] -> 1
[] -> 1
</pre>
 
=={{header|APL}}==
Anonymous user