gpt4 book ai didi

scala - 生成可能的组合

转载 作者:行者123 更新时间:2023-12-01 06:55:48 24 4
gpt4 key购买 nike

我有几个哈希图需要生成以下组合:

A: [x->1, y->2,...]
B: [x->1, a->4,...]
C: [x->1, b->5,...]
...

一些可能的组合:
A+B; A; A+C; A+B+C...

对于每个组合,我需要生成联合哈希映射并在两个哈希映射中使用相同的键执行键值对操作。

我能想到的只是使用二进制计数器并将数字映射到相应的哈希映射:
001 -> A
101 -> A,C
...

尽管此解决方案有效,但当我有 100 个以上的哈希映射时,模运算很耗时。我是 Scala 的新手,但我相信必须有更好的方法来实现这一目标?

最佳答案

Scala 序列有一个 combinations功能。这为您提供了从总数中选择特定数字的组合。从您的问题来看,您似乎想选择所有不同的数字,因此理论上您的代码可能类似于:

val elements = List('a, 'b, 'c, 'd)
(1 to elements.size).flatMap(elements.combinations).toList

/* List[List[Symbol]] = List(List('a), List('b), List('c), List('d), List('a, 'b),
List('a, 'c), List('a, 'd), List('b, 'c), List('b, 'd), List('c, 'd),
List('a, 'b, 'c), List('a, 'b, 'd), List('a, 'c, 'd), List('b, 'c, 'd),
List('a, 'b, 'c, 'd)) */

但正如所指出的,所有的组合都会太多。对于 100 个元素,从 100 中选择 2 会给你 4950 种组合,3 会给你 161700,4 会给你 3921225,而 5 会给你一个溢出错误。所以如果你只保留 combinations 的参数到 2 或 3 你应该没问题。

关于scala - 生成可能的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7560363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com