Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,25 @@
|
|||
Dim A.s(3)
|
||||
Dim B.s(3)
|
||||
|
||||
A(0)="John": A(1)="Bob": A(2)="Mary": A(3)="Serena"
|
||||
B(0)="Jim": B(1)="Mary":B(2)="John": B(3)="Bob"
|
||||
|
||||
For a=0 To ArraySize(A()) ; A-B
|
||||
For b=0 To ArraySize(B())
|
||||
If A(a)=B(b)
|
||||
Break
|
||||
ElseIf b=ArraySize(B())
|
||||
Debug A(a)
|
||||
EndIf
|
||||
Next b
|
||||
Next a
|
||||
|
||||
For b=0 To ArraySize(B()) ; B-A
|
||||
For a=0 To ArraySize(A())
|
||||
If A(a)=B(b)
|
||||
Break
|
||||
ElseIf a=ArraySize(A())
|
||||
Debug B(b)
|
||||
EndIf
|
||||
Next a
|
||||
Next b
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
DataSection
|
||||
SetA:
|
||||
Data.i 4
|
||||
Data.s "John", "Bob", "Mary", "Serena"
|
||||
; Data.i 5
|
||||
; Data.s "John", "Serena", "Bob", "Mary", "Serena"
|
||||
SetB:
|
||||
Data.i 4
|
||||
Data.s "Jim", "Mary", "John", "Bob"
|
||||
; Data.i 5
|
||||
; Data.s "Jim", "Mary", "John", "Jim", "Bob"
|
||||
EndDataSection
|
||||
|
||||
Procedure addElementsToSet(List x.s())
|
||||
;requires the read pointer to be set prior to calling by using 'Restore'
|
||||
Protected i, count
|
||||
|
||||
Read.i count
|
||||
For i = 1 To count
|
||||
AddElement(x())
|
||||
Read.s x()
|
||||
Next
|
||||
EndProcedure
|
||||
|
||||
Procedure displaySet(List x.s())
|
||||
Protected i, count = ListSize(x())
|
||||
FirstElement(x())
|
||||
For i = 1 To count
|
||||
Print(x())
|
||||
NextElement(x())
|
||||
If i <> count: Print(", "): EndIf
|
||||
Next
|
||||
PrintN("")
|
||||
EndProcedure
|
||||
|
||||
Procedure symmetricDifference(List a.s(), List b.s(), List result.s())
|
||||
Protected ACount = ListSize(a()), BCount = ListSize(b()), prev.s
|
||||
|
||||
;this may leave set a and b in a different order
|
||||
SortList(a(),#PB_Sort_Ascending)
|
||||
SortList(b(),#PB_Sort_Ascending)
|
||||
|
||||
FirstElement(a())
|
||||
FirstElement(b())
|
||||
LastElement(result()) ;add to end of result()
|
||||
While ACount > 0 Or BCount > 0
|
||||
If ACount <> 0 And BCount <> 0 And a() = b()
|
||||
ACount - 1: NextElement(a())
|
||||
BCount - 1: NextElement(b())
|
||||
ElseIf BCount = 0 Or (ACount <> 0 And a() < b())
|
||||
AddElement(result()): result() = a()
|
||||
prev = a(): Repeat: ACount - 1: NextElement(a()): Until ACount = 0 Or (a() <> prev)
|
||||
ElseIf ACount = 0 Or (BCount <> 0 And a() > b())
|
||||
AddElement(result()): result() = b()
|
||||
prev = b(): Repeat: BCount - 1: NextElement(b()): Until BCount = 0 Or (b() <> prev)
|
||||
EndIf
|
||||
Wend
|
||||
EndProcedure
|
||||
|
||||
If OpenConsole()
|
||||
NewList a.s(): Restore SetA: addElementsToSet(a())
|
||||
NewList b.s(): Restore SetB: addElementsToSet(b())
|
||||
Print("Set A: "): displaySet(a())
|
||||
Print("Set B: "): displaySet(b())
|
||||
|
||||
NewList sd.s()
|
||||
symmetricDifference(a(), b(), sd())
|
||||
Print("Symmetric Difference: "): displaySet(sd())
|
||||
|
||||
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit")
|
||||
Input()
|
||||
CloseConsole()
|
||||
EndIf
|
||||
Loading…
Add table
Add a link
Reference in a new issue