Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
37
Task/Symmetric-difference/REXX/symmetric-difference-1.rexx
Normal file
37
Task/Symmetric-difference/REXX/symmetric-difference-1.rexx
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
/*REXX program finds symmetric difference and symmetric AND (between two lists). */
|
||||
a= '["John", "Serena", "Bob", "Mary", "Serena"]' /*note the duplicate element: Serena */
|
||||
b= '["Jim", "Mary", "John", "Jim", "Bob"]' /* " " " " Jim */
|
||||
a.=0; SD.=0; SA.=0; SD=; SA= /*falsify booleans; zero & nullify vars*/
|
||||
a.1=a; say '──────────────list A =' a /*assign a list and display it to term.*/
|
||||
a.2=b; say '──────────────list B =' b /* " " " " " " " " */
|
||||
/* [↓] parse the two lists. */
|
||||
do k=1 for 2 /*process both lists (stemmed array). */
|
||||
a.k=strip( strip(a.k, , "["), ,']') /*strip leading and trailing brackets. */
|
||||
do j=1 until a.k='' /*parse names [they may have blanks]. */
|
||||
a.k=strip(a.k, , ',') /*strip all commas (if there are any). */
|
||||
parse var a.k '"' _ '"' a.k /*obtain the name of the list. */
|
||||
a.k.j=_ /*store the name of the list. */
|
||||
a.k._=1 /*make a boolean value. */
|
||||
end /*j*/
|
||||
a.k.0=j-1 /*the number of this list (of names). */
|
||||
end /*k*/
|
||||
say /* [↓] find the symmetric difference. */
|
||||
do k=1 for 2; ko=word(2 1, k) /*process both lists; KO=other list. */
|
||||
do j=1 for a.k.0; _=a.k.j /*process the list names. */
|
||||
if \a.ko._ & \SD._ then do; SD._=1 /*if not in both, then ··· */
|
||||
SD=SD '"'_'",' /*add to symmetric difference list. */
|
||||
end
|
||||
end /*j*/
|
||||
end /*k*/
|
||||
/* [↓] SD ≡ symmetric difference. */
|
||||
SD= "["strip( strip(SD), 'T', ",")']' /*clean up and add brackets [ ] to it.*/
|
||||
say 'symmetric difference =' SD /*display the symmetric difference. */
|
||||
/* [↓] locate the symmetric AND. */
|
||||
do j=1 for a.1.0; _=a.1.j /*process the A list names. */
|
||||
if a.1._ & a.2._ & \SA._ then do; SA._=1 /*if it's common to both, then ··· */
|
||||
SA=SA '"'_'",' /*add to symmetric AND list. */
|
||||
end
|
||||
end /*j*/
|
||||
say /* [↓] SA ≡ symmetric AND. */
|
||||
SA= "["strip( strip(SA), 'T', ",")']' /*clean up and add brackets [ ] to it.*/
|
||||
say ' symmetric AND =' SA /*stick a fork in it, we're all done. */
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
/*REXX pgm finds symmetric difference and symm. AND (between two lists).*/
|
||||
a.=0 /*falsify the booleans*/
|
||||
a= '["Zahn", "Yi", "Stands with a Fist", "", "Hungry Wolf", "Yi"]'
|
||||
b= '["Draag Ng [Jr.]", "Patzy", "Zahn", "Yi", "Robert the Bruce"]'
|
||||
∙
|
||||
∙
|
||||
∙
|
||||
25
Task/Symmetric-difference/REXX/symmetric-difference-3.rexx
Normal file
25
Task/Symmetric-difference/REXX/symmetric-difference-3.rexx
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
/* REXX ---------------------------------------------------------------
|
||||
* 14.12.2013 Walter Pachl a short solution
|
||||
* 16.12.2013 fix duplicate element problem in input
|
||||
* 16.12.2013 added duplicate to t.
|
||||
* Handles only sets the elements of which do not contain blanks
|
||||
*--------------------------------------------------------------------*/
|
||||
s='John Bob Mary Serena'
|
||||
t='Jim Mary John Bob Jim '
|
||||
Say difference(s,t)
|
||||
Exit
|
||||
difference:
|
||||
Parse Arg a,b
|
||||
res=''
|
||||
Do i=1 To words(a)
|
||||
If wordpos(word(a,i),b)=0 Then
|
||||
Call out word(a,i)
|
||||
End
|
||||
Do i=1 To words(b)
|
||||
If wordpos(word(b,i),a)=0 Then
|
||||
Call out word(b,i)
|
||||
End
|
||||
Return strip(res)
|
||||
out: parse Arg e
|
||||
If wordpos(e,res)=0 Then res=res e
|
||||
Return
|
||||
Loading…
Add table
Add a link
Reference in a new issue