File: class/Extras/Code/Misc/minmax.py

File: class/Extras/Code/Misc/minmax.py

def min0(x, y):
 if x < y: 
 return x
 else:
 return y
# support multiple arguments
def min1(*args):
 res = args[0] # start at first
 for x in args[1:]: # scan the rest
 if x < res:
 res = x
 return res
def min2(first, *rest):
 res = first # require one arg
 for x in rest: # scan the rest
 if x < res:
 res = x
 return res
# generalize with functions
def extreme(compare, first, *rest):
 res = first # start first, scan rest
 for x in rest: # use passed compare func
 if compare(x, res):
 res = x
 return res
def min3(*args):
 return apply(extreme, ((lambda x, y: x < y),) + args)
def max(*args):
 return apply(extreme, ((lambda x, y: x > y),) + args)
# same, but use code strings
def extreme2(op, first, *rest):
 res = first # start first, scan rest
 for x in rest: # use passed compare optr
 if eval(str(x) + op + str(res)):
 res = x
 return res
def selftest():
 print '-'*4, min0(43, 42)
 print '-'*4, min0([[1]], [[0]])
 for func in (min1, min2, min3, max):
 print '='*4, func.__name__, '='*4
 print func(1, 2)
 print func(6, 4, 3, 1, 2)
 print func('ddd', 'ba', 'ab')
 print func([1, (2, 5)], [1, (2, 3)], [1, (2, 4)])
 print '-'*4, extreme((lambda x, y: x < y), 6, 4, 3, 1, 2)
 print '-'*4, extreme2('<', 6, 4, 3, 1, 2)
 print '-'*4, extreme2('>', 6, 4, 3, 1, 2)
if __name__ == '__main__':
 selftest()



AltStyle によって変換されたページ (->オリジナル) /