是否有任何资源可以找到单射的常见 map-reduce 函数?(这些功能有名称吗?)
例如,我需要映射一个数字列表
lst = [1,2,3,4]
成一个元组(总和,产品)
def mapper(lst):
sum_, prod = 0, 1
for e in lst:
sum_ += e
prod *= e
res = mapper(lst)
# res = tuple(10, 24)
但是这个映射不是单射的,因为列表:
x = [1,2,3,4]
y = [4,3,2,1]
产生相同的结果。
我并不特别关心反转这些函数的“难度”,但是简单和硬可逆函数的不同来源会有所帮助。
此外,如果结果不会在范围内“爆炸”,那就太好了。例如函数:
def mapper(lst):
res = 1
for e, prime in zip( lst, prime_number_generator() ):
res *= prime**e
是一个 map-reduce,也是单射的,但结果是:
res = 2^1 * 3^2 * 5^3 * 7^4 = 2 * 9 * 125 * 2401 = 5402250 # too large number