DistinctElements.m package
- To: mathgroup at smc.vnet.net
- Subject: [mg7570] DistinctElements.m package
- From: "Xah Lee" <xah at best.com>
- Date: Sun, 15 Jun 1997 16:32:53 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
MathGroup users:
I've completed writing a general "Union" package which I call
DistinctElements.m. It contain two functions
In[14]:=
?DistinctElements
"DistinctElements[listA,sameTestQ] returns a list of distinct elements in \
listA, based on sameTestQ. sameTestQ must accept two arguments and return \
either True or False. listA can have head other than List. In order for \
DistinctElements to return truely distinct elements where \
sameTestQ[a,b]==False for any ordered pairs a,b in the result, sameTestQ
must \
be orderless and transitive: (1) sameTestQ[a,b]==sameTestQ[b,a], (2) if \
sameTestQ[a,b], sameTestQ[b,c], then sameTestQ[a,c]. Usage Example: \
DistinctElements[Permutations[Range at 3],Function[#1==Reverse at #2]]"
In[15]:=
?EquivalenceIndex
"EquivalenceIndex[listA,sameTestQ] returns a partition of indexes, e.g. \
{{1,4,7},{2},{3,10},{5,8},{6,9}}, of listA. Index of elements that are \
considered equivalent under sameTestQ are grouped together. sameTestQ must \
accept two arguments and return either True or False. ListA can have head \
other than List. To guarantee that sameTestQ[listA[[e]],listA[[f]]]==False \
for any e,f in distinct index grouping, sameTestQ must be orderless and \
transitive: (1) sameTestQ[a,b]==sameTestQ[b,a], (2) if sameTestQ[a,b], \
sameTestQ[b,c], then sameTestQ[a,c]. Usage Exapmle: \
EquivalenceIndex[Permutations[Range at 3],Function[#1==Reverse at #2]]"
Comes with full documentation and usage examples. I think it'd be useful to
some mma programers. Download it at:
<http://www.best.com/~xah/SpecialPlaneCurves_dir/MmaPackages_dir/mmaPackages
.html>
Send me comments & suggestions. I'll upload it to MathSource after a month.
Thanks.
Xah, xah at best.com, http://www.best.com/~xah/
Symantec Visual Cafe. Windows95/NT. CD-ROM. Factory Sealed. $50. email me.