Cartesian product of two or more lists: Difference between revisions
Content added Content deleted
(Added various BASIC dialects.) |
(Added QBasic and Gambas) |
||
Line 928: | Line 928: | ||
410 print "}" |
410 print "}" |
||
420 return</syntaxhighlight> |
420 return</syntaxhighlight> |
||
==={{header|Gambas}}=== |
|||
<syntaxhighlight lang="vbnet">Public array[2, 2] As Integer |
|||
Public Sub Main() |
|||
array[0, 0] = 1 |
|||
array[0, 1] = 2 |
|||
array[1, 0] = 3 |
|||
array[1, 1] = 4 |
|||
cartesian(array) |
|||
array[0, 0] = 3 |
|||
array[0, 1] = 4 |
|||
array[1, 0] = 1 |
|||
array[1, 1] = 2 |
|||
cartesian(array) |
|||
End |
|||
Sub cartesian(arr As Integer[]) |
|||
Dim u1 As Integer = arr.Max - 2 |
|||
Dim u2 As Integer = arr.Max - 2 |
|||
Dim i As Integer, j As Integer |
|||
For i = 0 To u1 |
|||
Print "{"; |
|||
For j = 0 To u2 |
|||
Print arr[i, j]; |
|||
If j < u1 Then Print ","; |
|||
Next |
|||
Print "}"; |
|||
If i < u2 Then Print " x "; |
|||
Next |
|||
Print " = {"; |
|||
For i = 0 To u1 |
|||
For j = 0 To u2 |
|||
Print "{"; arr[0, i]; ","; arr[1, j]; "}"; |
|||
If i < u2 Then |
|||
Print ", "; |
|||
Else |
|||
If j < u1 Then Print ", "; |
|||
End If |
|||
Next |
|||
Next |
|||
Print "}" |
|||
End Sub</syntaxhighlight> |
|||
==={{header|GW-BASIC}}=== |
==={{header|GW-BASIC}}=== |
||
Line 970: | Line 1,018: | ||
==={{header|QBasic}}=== |
==={{header|QBasic}}=== |
||
{{works with|QBasic|1.1}} |
|||
The [[#GW-BASIC|GW-BASIC]] solution works without any changes. |
|||
{{works with|QuickBasic|4.5}} |
|||
<syntaxhighlight lang="qbasic">DECLARE SUB cartesian (arr!()) |
|||
CLS |
|||
DIM array(2, 2) |
|||
array(1, 1) = 1: array(1, 2) = 2 |
|||
array(2, 1) = 3: array(2, 2) = 4 |
|||
CALL cartesian(array()) |
|||
array(1, 1) = 3: array(1, 2) = 4 |
|||
array(2, 1) = 1: array(2, 2) = 2 |
|||
CALL cartesian(array()) |
|||
END |
|||
SUB cartesian (arr()) |
|||
u1 = 2: u2 = 2 |
|||
FOR i = 1 TO u1 |
|||
PRINT "{"; |
|||
FOR j = 1 TO u2 |
|||
PRINT arr(i, j); |
|||
IF j < u1 THEN PRINT ","; |
|||
NEXT j |
|||
PRINT "}"; |
|||
IF i < u2 THEN PRINT " x "; |
|||
NEXT i |
|||
PRINT " = {"; |
|||
FOR i = 1 TO u1 |
|||
FOR j = 1 TO u2 |
|||
PRINT "{"; arr(1, i); ","; arr(2, j); "}"; |
|||
IF i < u2 THEN |
|||
PRINT ", "; |
|||
ELSE |
|||
IF j < u1 THEN PRINT ", "; |
|||
END IF |
|||
NEXT j |
|||
NEXT i |
|||
PRINT "}" |
|||
END SUB</syntaxhighlight> |
|||
==={{header|Run BASIC}}=== |
==={{header|Run BASIC}}=== |