gerbmerge/gerbmerge/schwartz.py

39 lines
968 B
Python
Raw Normal View History

"""
Implement the Schwartizan Transform method of sorting
a list by an arbitrary metric (see the Python FAQ section
4.51).
--------------------------------------------------------------------
This program is licensed under the GNU General Public License (GPL)
Version 3. See http://www.fsf.org for details of the license.
Rugged Circuits LLC
http://ruggedcircuits.com/gerbmerge
"""
def stripit(pair):
return pair[1]
def schwartz(List, Metric):
def pairing(element, M = Metric):
return (M(element), element)
2022-03-26 12:23:48 -07:00
paired = list(map(pairing, List))
paired.sort()
2022-03-26 12:23:48 -07:00
return list(map(stripit, paired))
def stripit2(pair):
return pair[0]
def schwartz2(List, Metric):
"Returns sorted list and also corresponding metrics"
def pairing(element, M = Metric):
return (M(element), element)
2022-03-26 12:23:48 -07:00
paired = list(map(pairing, List))
paired.sort()
2022-03-26 12:23:48 -07:00
theList = list(map(stripit, paired))
theMetrics = list(map(stripit2, paired))
return (theList, theMetrics)