Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
56
Task/Symmetric-difference/ALGOL-68/symmetric-difference.alg
Normal file
56
Task/Symmetric-difference/ALGOL-68/symmetric-difference.alg
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# symetric difference using associative arrays to represent the sets #
|
||||
# include the associative array code for string keys and values #
|
||||
PR read "aArray.a68" PR
|
||||
|
||||
# adds the elements of s to the associative array a, #
|
||||
# the elements will have empty strings for values #
|
||||
OP // = ( REF AARRAY a, []STRING s )REF AARRAY:
|
||||
BEGIN
|
||||
FOR s pos FROM LWB s TO UPB s DO
|
||||
a // s[ s pos ] := ""
|
||||
OD;
|
||||
a
|
||||
END # // # ;
|
||||
# returns an AARRAY containing the elements of a that aren't in b #
|
||||
OP - = ( REF AARRAY a, REF AARRAY b )REF AARRAY:
|
||||
BEGIN
|
||||
REF AARRAY result := INIT HEAP AARRAY;
|
||||
REF AAELEMENT e := FIRST a;
|
||||
WHILE e ISNT nil element DO
|
||||
IF NOT ( b CONTAINSKEY key OF e ) THEN
|
||||
result // key OF e := value OF e
|
||||
FI;
|
||||
e := NEXT a
|
||||
OD;
|
||||
result
|
||||
END # - # ;
|
||||
# returns an AARRAY containing the elements of a and those of b #
|
||||
# i.e. in set terms a UNION b #
|
||||
OP + = ( REF AARRAY a, REF AARRAY b )REF AARRAY:
|
||||
BEGIN
|
||||
REF AARRAY result := INIT HEAP AARRAY;
|
||||
REF AAELEMENT e := FIRST a;
|
||||
WHILE e ISNT nil element DO
|
||||
result // key OF e := value OF e;
|
||||
e := NEXT a
|
||||
OD;
|
||||
e := FIRST b;
|
||||
WHILE e ISNT nil element DO
|
||||
result // key OF e := value OF e;
|
||||
e := NEXT b
|
||||
OD;
|
||||
result
|
||||
END # + # ;
|
||||
# construct the associative arrays for the task #
|
||||
REF AARRAY a := INIT LOC AARRAY;
|
||||
REF AARRAY b := INIT LOC AARRAY;
|
||||
a // []STRING( "John", "Bob", "Mary", "Serena" );
|
||||
b // []STRING( "Jim", "Mary", "John", "Bob" );
|
||||
# find and show the symetric difference of a and b #
|
||||
REF AARRAY c := ( a - b ) + ( b - a );
|
||||
REF AAELEMENT e := FIRST c;
|
||||
WHILE e ISNT nil element DO
|
||||
print( ( " ", key OF e ) );
|
||||
e := NEXT c
|
||||
OD;
|
||||
print( ( newline ) )
|
||||
Loading…
Add table
Add a link
Reference in a new issue