Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
170
Task/Set/PureBasic/set.basic
Normal file
170
Task/Set/PureBasic/set.basic
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
Procedure.s booleanText(b) ;returns 'True' or 'False' for a boolean input
|
||||
If b: ProcedureReturn "True": EndIf
|
||||
ProcedureReturn "False"
|
||||
EndProcedure
|
||||
|
||||
Procedure.s listSetElements(Map a(), delimeter.s = " ") ;format elements for display
|
||||
Protected output$
|
||||
|
||||
ForEach a()
|
||||
output$ + MapKey(a()) + delimeter
|
||||
Next
|
||||
|
||||
ProcedureReturn "(" + RTrim(output$, delimeter) + ")"
|
||||
EndProcedure
|
||||
|
||||
Procedure.s listSortedSetElements(Map a(), delimeter.s = " ") ;format elements for display as sorted for easy comparison
|
||||
Protected output$
|
||||
NewList b.s()
|
||||
|
||||
ForEach a()
|
||||
AddElement(b()): b() = MapKey(a())
|
||||
Next
|
||||
SortList(b(), #PB_Sort_Ascending | #PB_Sort_NoCase)
|
||||
ForEach b()
|
||||
output$ + b() + delimeter
|
||||
Next
|
||||
|
||||
ProcedureReturn "(" + RTrim(output$, delimeter) + ")"
|
||||
EndProcedure
|
||||
|
||||
Procedure cardinalityOf(Map a())
|
||||
ProcedureReturn MapSize(a())
|
||||
EndProcedure
|
||||
|
||||
Procedure createSet(elements.s, Map o(), delimeter.s = " ", clearSet = 1)
|
||||
Protected i, elementCount
|
||||
|
||||
If clearSet: ClearMap(o()): EndIf
|
||||
elementCount = CountString(elements, delimeter) + 1 ;add one for the last element which won't have a delimeter
|
||||
For i = 1 To elementCount
|
||||
AddMapElement(o(), StringField(elements, i, delimeter))
|
||||
Next
|
||||
|
||||
ProcedureReturn MapSize(o())
|
||||
EndProcedure
|
||||
|
||||
Procedure adjoinTo(elements.s, Map o(), delimeter.s = " ")
|
||||
ProcedureReturn createSet(elements, o(), delimeter, 0)
|
||||
EndProcedure
|
||||
|
||||
Procedure disjoinFrom(elements.s, Map o(), delimeter.s = " ")
|
||||
Protected i, elementCount
|
||||
|
||||
elementCount = CountString(elements, delimeter) + 1 ;add one for the last element which won't have a delimeter
|
||||
For i = 1 To elementCount
|
||||
DeleteMapElement(o(), StringField(elements, i, delimeter))
|
||||
Next
|
||||
|
||||
ProcedureReturn MapSize(o())
|
||||
EndProcedure
|
||||
|
||||
Procedure isElementOf(element.s, Map a())
|
||||
ProcedureReturn FindMapElement(a(), element)
|
||||
EndProcedure
|
||||
|
||||
|
||||
|
||||
Procedure unionOf(Map a(), Map b(), Map o())
|
||||
CopyMap(a(), o())
|
||||
ForEach b()
|
||||
AddMapElement(o(), MapKey(b()))
|
||||
Next
|
||||
|
||||
ProcedureReturn MapSize(o())
|
||||
EndProcedure
|
||||
|
||||
Procedure intersectionOf(Map a(), Map b(), Map o())
|
||||
ClearMap(o())
|
||||
ForEach a()
|
||||
If FindMapElement(b(), MapKey(a()))
|
||||
AddMapElement(o(), MapKey(a()))
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ProcedureReturn MapSize(o())
|
||||
EndProcedure
|
||||
|
||||
Procedure differenceOf(Map a(), Map b(), Map o())
|
||||
CopyMap(a(), o())
|
||||
ForEach b()
|
||||
If FindMapElement(o(), MapKey(b()))
|
||||
DeleteMapElement(o())
|
||||
Else
|
||||
AddMapElement(o(), MapKey(b()))
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ProcedureReturn MapSize(o())
|
||||
EndProcedure
|
||||
|
||||
Procedure isSubsetOf(Map a(), Map b()) ;boolean
|
||||
ForEach a()
|
||||
If Not FindMapElement(b(), MapKey(a()))
|
||||
ProcedureReturn 0
|
||||
EndIf
|
||||
Next
|
||||
ProcedureReturn 1
|
||||
EndProcedure
|
||||
|
||||
Procedure isProperSubsetOf(Map a(), Map b()) ;boolean
|
||||
If MapSize(a()) = MapSize(b())
|
||||
ProcedureReturn 0
|
||||
EndIf
|
||||
ProcedureReturn isSubsetOf(a(), b())
|
||||
EndProcedure
|
||||
|
||||
Procedure isEqualTo(Map a(), Map b())
|
||||
If MapSize(a()) = MapSize(b())
|
||||
ProcedureReturn isSubsetOf(a(), b())
|
||||
EndIf
|
||||
ProcedureReturn 0
|
||||
EndProcedure
|
||||
|
||||
Procedure isEmpty(Map a()) ;boolean
|
||||
If MapSize(a())
|
||||
ProcedureReturn 0
|
||||
EndIf
|
||||
ProcedureReturn 1
|
||||
EndProcedure
|
||||
|
||||
If OpenConsole()
|
||||
NewMap a()
|
||||
NewMap b()
|
||||
NewMap o() ;for output sets
|
||||
NewMap c()
|
||||
|
||||
createSet("red blue green orange yellow", a())
|
||||
PrintN("Set A = " + listSortedSetElements(a()) + " of cardinality " + Str(cardinalityOf(a())) + ".")
|
||||
createSet("lady green red", b())
|
||||
PrintN("Set B = " + listSortedSetElements(b()) + " of cardinality " + Str(cardinalityOf(b())) + ".")
|
||||
PrintN("'red' is an element of A is " + booleanText(isElementOf("red", a())) + ".")
|
||||
PrintN("'red' is an element of B is " + booleanText(isElementOf("red", b())) + ".")
|
||||
PrintN("'blue' is an element of B is " + booleanText(isElementOf("blue", b())) + ".")
|
||||
|
||||
unionOf(a(), b(), o())
|
||||
PrintN(#crlf$ + "Union of A & B is " + listSortedSetElements(o()) + ".")
|
||||
intersectionOf(a(), b(), o())
|
||||
PrintN("Intersection of A & B is " + listSortedSetElements(o()) + ".")
|
||||
differenceOf(a(), b(), o())
|
||||
PrintN("Difference of A & B is " + listSortedSetElements(o()) + ".")
|
||||
|
||||
PrintN(listSortedSetElements(a()) + " equals " + listSortedSetElements(a()) + " is " + booleanText(isEqualTo(a(), a())) + ".")
|
||||
PrintN(listSortedSetElements(a()) + " equals " + listSortedSetElements(b()) + " is " + booleanText(isEqualTo(a(), b())) + ".")
|
||||
|
||||
createSet("red green", c())
|
||||
PrintN(#crlf$ + listSortedSetElements(c()) + " is a subset of " + listSortedSetElements(a()) + " is "+ booleanText(isSubsetOf(c(), a())) + ".")
|
||||
PrintN(listSortedSetElements(c()) + " is a proper subset of " + listSortedSetElements(b()) + " is "+ booleanText(isProperSubsetOf(c(), b())) + ".")
|
||||
PrintN(listSortedSetElements(c()) + " is a proper subset of " + listSortedSetElements(a()) + " is "+ booleanText(isProperSubsetOf(c(), a())) + ".")
|
||||
PrintN(listSortedSetElements(b()) + " is a proper subset of " + listSortedSetElements(b()) + " is "+ booleanText(isProperSubsetOf(b(), b())) + ".")
|
||||
|
||||
PrintN(#crlf$ + "Set C = " + listSortedSetElements(c()) + " of cardinality " + Str(cardinalityOf(c())) + ".")
|
||||
adjoinTo("dog cat mouse", c())
|
||||
PrintN("Add 'dog cat mouse' to C to get " + listSortedSetElements(c()) + " of cardinality " + Str(cardinalityOf(c())) + ".")
|
||||
disjoinFrom("red green dog", c())
|
||||
PrintN("Take away 'red green dog' from C to get " + listSortedSetElements(c()) + " of cardinality " + Str(cardinalityOf(c())) + ".")
|
||||
|
||||
|
||||
Print(#crlf$ + #crlf$ + "Press ENTER to exit"): Input()
|
||||
CloseConsole()
|
||||
EndIf
|
||||
Loading…
Add table
Add a link
Reference in a new issue