Exactly three adjacent 3 in lists: Difference between revisions

Added Applesoft BASIC, BASIC256, Chipmunk Basic, GW-BASIC, Minimal BASIC, MSX Basic, PureBasic, QBasic, Quite BASIC, True BASIC and XBasic
(add RPL)
(Added Applesoft BASIC, BASIC256, Chipmunk Basic, GW-BASIC, Minimal BASIC, MSX Basic, PureBasic, QBasic, Quite BASIC, True BASIC and XBasic)
Line 444:
T 4,6,8,7,2,3,3,3,1
</pre>
 
=={{header|BASIC}}==
==={{header|Applesoft BASIC}}===
The [[#GW-BASIC|GW-BASIC]] solution works without any changes.
 
==={{header|BASIC256}}===
<syntaxhighlight lang="vb">arraybase 1
dim list(5, 9)
list = {{9,3,3,3,2,1,7,8,5}, {5,2,9,3,3,7,8,4,1},{1,4,3,6,7,3,8,3,2}, {1,2,3,4,5,6,7,8,9},{4,6,8,7,2,3,3,3,1}}
 
for i = 1 to list[?][]
go = false
pass = true
c = 0
for j = 1 to list[][?]
if list[i, j] = 3 then
c+=1
go = true
else
if go = true and c <> 3 then pass = false
go = false
end if
next j
print i; " ";
if c = 3 and pass then print "true" else print "false"
next i</syntaxhighlight>
{{out}}
<pre>Similar to FreeBASIC entry.</pre>
 
==={{header|Chipmunk Basic}}===
{{works with|Chipmunk Basic|3.6.4}}
<syntaxhighlight lang="qbasic">100 cls
110 data 9,3,3,3,2,1,7,8,5
120 data 5,2,9,3,3,7,8,4,1
130 data 1,4,3,6,7,3,8,3,2
140 data 1,2,3,4,5,6,7,8,9
150 data 4,6,8,7,2,3,3,3,1
160 dim lista(5,9)
170 for i = 1 to ubound(lista)
180 for j = 1 to ubound(lista,2)
190 read lista(i,j)
200 next j
210 next i
220 for i = 1 to ubound(lista)
230 go = false
240 pass = true
250 c = 0
260 for j = 1 to ubound(lista,2)
270 if lista(i,j) = 3 then
280 c = c+1
290 go = true
300 else
310 if go = true and c <> 3 then pass = false
320 go = false
330 endif
340 next j
350 print i;" ";
360 if c = 3 and pass then print "True" else print "False"
370 next i
380 end</syntaxhighlight>
{{out}}
<pre>Similar to FreeBASIC entry.</pre>
 
==={{header|GW-BASIC}}===
{{works with|Applesoft BASIC}}
{{works with|Chipmunk Basic}}
{{works with|PC-BASIC|any}}
{{works with|QBasic}}
{{works with|Quite BASIC}}
<syntaxhighlight lang="qbasic">100 CLS : rem 100 HOME for Applesoft BASIC
110 LET f = 0
115 LET t = 1
120 DATA 9,3,3,3,2,1,7,8,5
130 DATA 5,2,9,3,3,7,8,4,1
140 DATA 1,4,3,6,7,3,8,3,2
150 DATA 1,2,3,4,5,6,7,8,9
160 DATA 4,6,8,7,2,3,3,3,1
170 DIM l(5,9)
180 FOR i = 1 TO 5
190 FOR j = 1 TO 9
200 READ l(i,j)
210 NEXT j
220 NEXT i
230 FOR i = 1 TO 5
240 LET g = f
250 LET p = t
260 LET c = 0
270 FOR j = t TO 9
280 IF l(i,j) = 3 THEN LET c = c+1
281 IF l(i,j) = 3 THEN LET g = t
282 IF l(i,j) <> 3 THEN GOSUB 340
283 IF l(i,j) <> 3 THEN LET g = f
290 NEXT j
300 PRINT i; " ";
310 IF c = 3 AND p = t THEN PRINT "true"
315 IF c <> 3 OR p <> t THEN PRINT "false"
320 NEXT i
330 END
340 IF g = t AND c <> 3 THEN LET p = f
350 RETURN</syntaxhighlight>
{{out}}
<pre>Similar to FreeBASIC entry.</pre>
 
==={{header|Minimal BASIC}}===
{{works with|QBasic}}
{{works with|QuickBasic}}
{{works with|Applesoft BASIC}}
{{works with|BASICA}}
{{works with|Chipmunk Basic}}
{{works with|GW-BASIC}}
{{works with|MSX BASIC|any}}
{{trans|Chipmunk Basic}}
<syntaxhighlight lang="qbasic">100 LET F = 0
110 LET T = 1
120 DATA 9,3,3,3,2,1,7,8,5
130 DATA 5,2,9,3,3,7,8,4,1
140 DATA 1,4,3,6,7,3,8,3,2
150 DATA 1,2,3,4,5,6,7,8,9
160 DATA 4,6,8,7,2,3,3,3,1
170 DIM L(5,9)
180 FOR I = 1 TO 5
190 FOR J = 1 TO 9
200 READ L(I,J)
210 NEXT J
220 NEXT I
230 FOR I = 1 TO 5
240 LET G = F
250 LET P = T
260 LET C = 0
270 FOR J = T TO 9
280 IF L(I,J) = 3 THEN 300
290 IF L(I,J) <> 3 THEN 330
300 LET C = C + 1
310 LET G = T
320 GOTO 390
330 IF G = T THEN 360
340 LET G = F
350 GOTO 390
360 IF C <> 3 THEN 380
370 GOTO 390
380 LET P = F
390 NEXT J
400 PRINT I; " ";
410 IF C = 3 THEN 430
420 GOTO 440
430 IF P = T THEN 460
440 IF C <> 3 THEN 480
450 IF P <> T THEN 480
460 PRINT "TRUE"
470 GOTO 490
480 PRINT "FALSE"
490 NEXT I
500 END</syntaxhighlight>
{{out}}
<pre>Similar to FreeBASIC entry.</pre>
 
==={{header|MSX Basic}}===
{{works with|MSX BASIC|any}}
<syntaxhighlight lang="qbasic">100 CLS
110 false = 0 : true = 1
120 DATA 9,3,3,3,2,1,7,8,5
130 DATA 5,2,9,3,3,7,8,4,1
140 DATA 1,4,3,6,7,3,8,3,2
150 DATA 1,2,3,4,5,6,7,8,9
160 DATA 4,6,8,7,2,3,3,3,1
170 DIM lis(5,9)
180 FOR i = 1 TO 5
190 FOR j = 1 TO 9
200 READ lis(i,j)
210 NEXT j
220 NEXT i
230 FOR i = 1 TO 5
240 go = false
250 pass = true
260 c = 0
270 FOR j = true TO 9
280 IF lis(i,j) = 3 THEN c = c+1 : go = true ELSE GOSUB 340 : go = false
290 NEXT j
300 PRINT i;" ";
310 IF c = 3 AND pass = true THEN PRINT "true" ELSE PRINT "false"
320 NEXT i
330 END
340 IF go = true AND c <> 3 THEN pass = false
350 RETURN</syntaxhighlight>
{{out}}
<pre>Similar to FreeBASIC entry.</pre>
 
==={{header|PureBasic}}===
<syntaxhighlight lang="vb">OpenConsole()
 
Dim lista.i(5, 9)
Define.b go, pass
Define.i i, j, c
 
For i = 1 To ArraySize(lista())
For j = 1 To ArraySize(lista(),2)
Read.i lista(i,j)
Next j
Next i
 
For i = 1 To ArraySize(lista())
go = #False
pass = #True
c = 0
For j = 1 To ArraySize(lista(),2)
If lista(i, j) = 3:
c + 1
go = #True
Else
If go = #True And c <> 3:
pass = #False
EndIf
go = #False
EndIf
Next j
Print(Str(i) + #TAB$)
If c = 3 And pass = #True:
PrintN("True")
Else
PrintN("False")
EndIf
Next i
 
PrintN(#CRLF$ + "--- terminado, pulsa RETURN---"): Input()
CloseConsole()
 
DataSection
Data.i 9,3,3,3,2,1,7,8,5
Data.i 5,2,9,3,3,7,8,4,1
Data.i 1,4,3,6,7,3,8,3,2
Data.i 1,2,3,4,5,6,7,8,9
Data.i 4,6,8,7,2,3,3,3,1
EndDataSection</syntaxhighlight>
{{out}}
<pre>Similar to FreeBASIC entry.</pre>
 
==={{header|QBasic}}===
{{works with|QBasic|1.1}}
{{works with|QuickBasic|4.5}}
<syntaxhighlight lang="qbasic">CONST False = 0: True = NOT False
 
DATA 9,3,3,3,2,1,7,8,5
DATA 5,2,9,3,3,7,8,4,1
DATA 1,4,3,6,7,3,8,3,2
DATA 1,2,3,4,5,6,7,8,9
DATA 4,6,8,7,2,3,3,3,1
DIM lista(1 TO 5, 1 TO 9) AS INTEGER
FOR i = 1 TO UBOUND(lista)
FOR j = 1 TO UBOUND(lista, 2)
READ lista(i, j)
NEXT j
NEXT i
 
FOR i = 1 TO UBOUND(lista)
go = False
pass = True
c = 0
FOR j = 1 TO UBOUND(lista, 2)
IF lista(i, j) = 3 THEN
c = c + 1
go = True
ELSE
IF go = True AND c <> 3 THEN pass = False
go = False
END IF
NEXT j
PRINT i; " ";
IF c = 3 AND pass THEN PRINT "True" ELSE PRINT "False"
NEXT i</syntaxhighlight>
{{out}}
<pre>Similar to FreeBASIC entry.</pre>
 
==={{header|Quite BASIC}}===
The [[#GW-BASIC|GW-BASIC]] solution works without any changes.
 
==={{header|True BASIC}}===
<syntaxhighlight lang="qbasic">DIM lista(5, 9)
DATA 9, 3, 3, 3, 2, 1, 7, 8, 5
DATA 5, 2, 9, 3, 3, 7, 8, 4, 1
DATA 1, 4, 3, 6, 7, 3, 8, 3, 2
DATA 1, 2, 3, 4, 5, 6, 7, 8, 9
DATA 4, 6, 8, 7, 2, 3, 3, 3, 1
FOR i = 1 TO UBOUND(lista,1)
FOR j = 1 TO UBOUND(lista,2)
READ lista(i, j)
NEXT j
NEXT i
 
FOR i = 1 TO UBOUND(lista,1)
LET go = 0
LET pass = 1
LET c = 0
FOR j = 1 TO UBOUND(lista,2)
IF lista(i, j) = 3 THEN
LET c = c + 1
LET go = 1
ELSE
IF go = 1 AND c <> 3 THEN LET pass = 0
LET go = 0
END IF
NEXT j
PRINT i; " ";
IF c = 3 AND pass <> 0 THEN PRINT "True" ELSE PRINT "False"
NEXT i
END</syntaxhighlight>
{{out}}
<pre>Similar to FreeBASIC entry.</pre>
 
==={{header|Yabasic}}===
<syntaxhighlight lang="vb">dim lista(5, 9)
data 9,3,3,3,2,1,7,8,5
data 5,2,9,3,3,7,8,4,1
data 1,4,3,6,7,3,8,3,2
data 1,2,3,4,5,6,7,8,9
data 4,6,8,7,2,3,3,3,1
 
for i = 1 to arraysize(lista(),1)
for j = 1 to arraysize(lista(),2)
read lista(i,j)
next j
next i
 
for i = 1 to arraysize(lista(),1)
go = false
pass = true
c = 0
for j = 1 to arraysize(lista(),2)
if lista(i, j) = 3 then
c = c + 1
go = true
else
if go = true and c <> 3 pass = false
go = false
end if
next j
print i, " ";
if c = 3 and pass then print "True" else print "False" : fi
next i</syntaxhighlight>
{{out}}
<pre>Similar to FreeBASIC entry.</pre>
 
=={{header|C}}==
2,127

edits