Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
126
Task/Set/FreeBASIC/set.basic
Normal file
126
Task/Set/FreeBASIC/set.basic
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
function is_in( N as integer, S() as integer ) as boolean
|
||||
'test if the value N is in the set S
|
||||
for i as integer = 0 to ubound(S)
|
||||
if N=S(i) then return true
|
||||
next i
|
||||
return false
|
||||
end function
|
||||
|
||||
sub add_to_set( N as integer, S() as integer )
|
||||
'adds the element N to the set S
|
||||
if is_in( N, S() ) then return
|
||||
dim as integer k = ubound(S)
|
||||
redim preserve S(0 to k+1)
|
||||
S(k+1)=N
|
||||
end sub
|
||||
|
||||
sub setunion( S() as integer, T() as integer, U() as integer )
|
||||
'makes U() the union of the sets S and T
|
||||
dim as integer k = ubound(S)
|
||||
redim U(-1)
|
||||
for i as integer = 0 to k
|
||||
add_to_set( S(i), U() )
|
||||
next i
|
||||
k = ubound(T)
|
||||
for i as integer = 0 to k
|
||||
if not is_in( T(i), U() ) then
|
||||
add_to_set( T(i), U() )
|
||||
end if
|
||||
next i
|
||||
end sub
|
||||
|
||||
sub setintersect( S() as integer, T() as integer, U() as integer )
|
||||
'makes U() the intersection of the sets S and T
|
||||
dim as integer k = ubound(S)
|
||||
redim U(-1)
|
||||
for i as integer = 0 to k
|
||||
if is_in(S(i), T()) then add_to_set( S(i), U() )
|
||||
next i
|
||||
end sub
|
||||
|
||||
sub setsubtract( S() as integer, T() as integer, U() as integer )
|
||||
'makes U() the difference of the sets S and T
|
||||
dim as integer k = ubound(S)
|
||||
redim U(-1)
|
||||
for i as integer = 0 to k
|
||||
if not is_in(S(i), T()) then add_to_set( S(i), U() )
|
||||
next i
|
||||
end sub
|
||||
|
||||
function is_subset( S() as integer, T() as integer ) as boolean
|
||||
for i as integer = 0 to ubound(S)
|
||||
if not is_in( S(i), T() ) then return false
|
||||
next i
|
||||
return true
|
||||
end function
|
||||
|
||||
function is_equal( S() as integer, T() as integer ) as boolean
|
||||
if not is_subset( S(), T() ) then return false
|
||||
if not is_subset( T(), S() ) then return false
|
||||
return true
|
||||
end function
|
||||
|
||||
function is_proper_subset( S() as integer, T() as integer ) as boolean
|
||||
if not is_subset( S(), T() ) then return false
|
||||
if is_equal( S(), T() ) then return false
|
||||
return true
|
||||
end function
|
||||
|
||||
sub show_set( L() as integer )
|
||||
'display a set
|
||||
dim as integer num = ubound(L)
|
||||
if num=-1 then
|
||||
print "[]"
|
||||
return
|
||||
end if
|
||||
print "[";
|
||||
for i as integer = 0 to num-1
|
||||
print str(L(i))+", ";
|
||||
next i
|
||||
print str(L(num))+"]"
|
||||
end sub
|
||||
|
||||
'sets are created by making an empty array
|
||||
redim as integer S1(-1), S2(-1), S3(-1), S4(-1), S5(-1)
|
||||
'and populated by adding elements one-by-one
|
||||
add_to_set( 20, S1() ) : add_to_set( 30, S1() )
|
||||
add_to_set( 40, S1() ) : add_to_set( 50, S1() )
|
||||
add_to_set( 19, S2() ) : add_to_set( 20, S2() )
|
||||
add_to_set( 21, S2() ) : add_to_set( 22, S2() )
|
||||
add_to_set( 22, S3() ) : add_to_set( 21, S3() )
|
||||
add_to_set( 19, S3() ) : add_to_set( 20, S3() )
|
||||
add_to_set( 21, S3() ) ' attempt to add a number that's already in the set
|
||||
add_to_set( 21, S4() )
|
||||
print "S1 ",
|
||||
show_set S1()
|
||||
print "S2 ",
|
||||
show_set S2()
|
||||
print "S3 ",
|
||||
show_set S3()
|
||||
print "S4 ",
|
||||
show_set S4()
|
||||
print "S5 ",
|
||||
show_set S5()
|
||||
print "----"
|
||||
redim as integer S_U(-1)
|
||||
setunion S1(), S2(), S_U()
|
||||
print "S1 U S2 ",
|
||||
show_set S_U()
|
||||
redim as integer S_U(-1)
|
||||
setintersect S1(), S2(), S_U()
|
||||
print "S1 n S2 ",
|
||||
show_set S_U()
|
||||
redim as integer S_U(-1)
|
||||
setsubtract S1(), S2(), S_U()
|
||||
print "S1 \ S2 ",
|
||||
show_set S_U()
|
||||
redim as integer S_U(-1)
|
||||
setsubtract S3(), S1(), S_U()
|
||||
print "S3 \ S1 ",
|
||||
show_set S_U()
|
||||
print "S4 in S3? ", is_subset(S4(), S3())
|
||||
print "S3 in S4? ", is_subset(S3(), S4())
|
||||
print "S5 in S3? ", is_subset(S5(), S3()) 'empty set is a subset of every set
|
||||
print "S2 = S3? ", is_equal(S2(), S3())
|
||||
print "S4 proper subset of S3? ", is_proper_subset( S4(), S3() )
|
||||
print "S2 proper subset of S3? ", is_proper_subset( S2(), S3() )
|
||||
Loading…
Add table
Add a link
Reference in a new issue