我最终确信这个问题有一个答案,但是对于我的生活来说无法弄清楚如何去做.
假设我有三套:
A = [ 'foo', 'bar', 'baz', 'bah' ]
B = [ 'wibble', 'wobble', 'weeble' ]
C = [ 'nip', 'nop' ]
Run Code Online (Sandbox Code Playgroud)
而且我知道如何计算笛卡尔/十字架产品,(蚂蚁它覆盖了整个地方,在这个网站和其他地方)所以我不会在这里讨论它.
我正在寻找的是一种算法,它允许我简单地从笛卡尔积中选择一个特定项而不生成整个集或迭代直到我到达第n个项.
当然,我可以很容易地迭代一个像这样的小例子集,但我正在处理的代码将使用更大的集合.
因此,我正在寻找一个功能,我们称之为'CP',其中:
CP(1) == [ 'foo', 'wibble', 'nip' ]
CP(2) == [ 'foo', 'wibble', 'nop' ]
CP(3) == [ 'foo', 'wobble', 'nip' ]
CP(4) == [ 'foo', 'wobble', 'nop' ]
CP(5) == [ 'foo', 'weeble', 'nip' ]
CP(6) == [ 'foo', 'weeble', 'nop' ]
CP(7) == [ 'bar', 'wibble', 'nip' ]
...
CP(22) …Run Code Online (Sandbox Code Playgroud)