0

是否有任何资源可以找到单射的常见 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
4

0 回答 0