How to resolve the algorithm Cartesian product of two or more lists step by step in the BASIC programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Cartesian product of two or more lists step by step in the BASIC programming language

Table of Contents

Problem Statement

Show one or more idiomatic ways of generating the Cartesian product of two arbitrary lists in your language. Demonstrate that your function/method correctly returns: and, in contrast: Also demonstrate, using your function/method, that the product of an empty list with any other list is empty. For extra credit, show or write a function returning the n-ary product of an arbitrary number of lists, each of arbitrary length. Your function might, for example, accept a single argument which is itself a list of lists, and return the n-ary product of those lists. Use your n-ary Cartesian product function to show the following products:

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Cartesian product of two or more lists step by step in the BASIC programming language

Source code in the basic programming language

100 HOME : rem  10 CLS FOR Chipmunk Basic & GW-BASIC
110 DIM array(2,2)
120 array(1,1) = 1 : array(1,2) = 2
130 array(2,1) = 3 : array(2,2) = 4
140 GOSUB 190
150 array(1,1) = 3 : array(1,2) = 4
160 array(2,1) = 1 : array(2,2) = 2
170 GOSUB 190
180 END
190 rem SUB cartesian(list)
200  u1 = 2 : u2 = 2
210  FOR i = 1 TO u1
220    PRINT "{ ";
230    FOR j = 1 TO u2
240      PRINT array(i,j);
250      IF j < u1 THEN PRINT ", ";
260    NEXT j
270    PRINT "}";
280    IF i < u2 THEN PRINT " x ";
290  NEXT i
300  PRINT " = { ";
310  FOR i = 1 TO u1
320    FOR j = 1 TO u2
330      PRINT "{ "; array(1,i); ", "; array(2,j); "} ";
340      IF i < u2 THEN PRINT ", ";
350      IF i => u2 THEN IF j < u1 THEN PRINT ", ";
360    NEXT j
370  NEXT i
380  PRINT "}"
390 RETURN


arraybase 1
subroutine cartesian(list)
	u1 = list[?][]
	u2 = list[][?]

	for i = 1 to u1
		print "{";
		for j = 1 to u2
			print list[i,j];
			if j < u1 then print ", ";
		next
		print "}";
		if i < u2 then print " x ";
	next i
	print " = { ";
	for i = 1 to u1
		for j = 1 to u2
			print "{"; list[1, i]; ", "; list[2, j]; "} ";
			if i < u2 then
				print ", ";
			else
				if j < u1 then print ", ";
			end if
		next j
	next i
	print "}"
end subroutine

dim list1 = {{1,2},{3,4}}
dim list2 = {{3,4},{1,2}}
call cartesian(list1)
call cartesian(list2)
end

100 cls
110 dim array(2,2)
120 array(1,1) = 1 : array(1,2) = 2
130 array(2,1) = 3 : array(2,2) = 4
140 gosub 190
150 array(1,1) = 3 : array(1,2) = 4
160 array(2,1) = 1 : array(2,2) = 2
170 gosub 190
180 end
190 rem sub cartesian(list)
200  u1 = 2 : u2 = 2
210  for i = 1 to u1
220    print "{ ";
230    for j = 1 to u2
240      print array(i,j);
250      if j < u1 then print ", ";
260    next j
270    print "}";
280    if i < u2 then print " x ";
290  next i
300  print " = { ";
310  for i = 1 to u1
320    for j = 1 to u2
330      print "{ ";array(1,i);", ";array(2,j);"} ";
340      if i < u2 then
350        print ", ";
360      else
370        if j < u1 then print ", ";
380      endif
390    next j
400  next i
410  print "}"
420 return


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


100 CLS
110 DIM ARR(2,2)
120 ARR(1,1) = (1) : ARR(1,2) = (2)
130 ARR(2,1) = (3) : ARR(2,2) = (4)
140 GOSUB 190
150 ARR(1,1) = 3 : ARR(1,2) = 4
160 ARR(2,1) = 1 : ARR(2,2) = 2
170 GOSUB 190
180 END
190 REM SUB cartesian(list)
200  U1 = 2 : U2 = 2
210  FOR I = 1 TO U1
220    PRINT "{";
230    FOR J = 1 TO U2
240      PRINT ARR(I,J);
250      IF J < U1 THEN PRINT ",";
260    NEXT J
270    PRINT "}";
280    IF I < U2 THEN PRINT " x ";
290  NEXT I
300  PRINT " = {";
310  FOR I = 1 TO U1
320    FOR J = 1 TO U2
330      PRINT "{"; ARR(1,I); ","; ARR(2,J); "}";
340      IF I < U2 THEN PRINT ", ";
350      IF I => U2 THEN IF J < U1 THEN PRINT ",";
360    NEXT J
370  NEXT I
380  PRINT "}"
390 RETURN


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


cls
dim array(2,2)
array(1,1) = 1 : array(1,2) = 2
array(2,1) = 3 : array(2,2) = 4
gosub [cartesian]
array(1,1) = 3 : array(1,2) = 4
array(2,1) = 1 : array(2,2) = 2
gosub [cartesian]
end

[cartesian]
u1 = 2 : u2 = 2
for i = 1 to u1
  print "{";
  for j = 1 to u2
    print array(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 "{"; array(1,i); ","; array(2,j); "}";
    if i < u2 then
      print ",";
    else
      if j < u1 then print ",";
    end if
  next j
next i
print "}"
return

  

You may also check:How to resolve the algorithm Middle three digits step by step in the Quackery programming language
You may also check:How to resolve the algorithm Loop over multiple arrays simultaneously step by step in the Icon and Unicon programming language
You may also check:How to resolve the algorithm Get system command output step by step in the Stata programming language
You may also check:How to resolve the algorithm File input/output step by step in the Babel programming language
You may also check:How to resolve the algorithm Arithmetic/Integer step by step in the TI-89 BASIC programming language