我刚开始涉足Factor。我想计算两个序列的笛卡尔积:
{ 1 2 3 }
{ 8 9 }
我想看到的是一系列序列:
{ { 1 8 } { 1 9 } { 2 8 } { 2 9 } { 3 8 } { 3 9 } }
当我使用cartesian-product
字时,我得到一系列序列序列:
{ { { 1 8 } { 1 9 } } { { 2 8 } { 2 9 } } { { 3 8 } { 3 9 } } }
我也试过[ 2array ] cartesian-map
,但我得到同样的东西。最后,我尝试[ 2array ] cartesian-each
,但我将每一对分别推到堆栈上。至少它是平的,但我希望它们都在一个阵列中。
我该怎么做?
答案 0 :(得分:4)
我不确定是否存在执行此操作的现有库方法(仅限自己开始使用),但您可以通过将cartesian-product
与append
和reduce
组合来实现:< / p>
--- Data stack:
{ "a" "b" "c" }
{ 1 2 3 4 }
( scratchpad ) cartesian-product { } [ append ] reduce .
{
{ "a" 1 }
{ "a" 2 }
{ "a" 3 }
{ "a" 4 }
{ "b" 1 }
{ "b" 2 }
{ "b" 3 }
{ "b" 4 }
{ "c" 1 }
{ "c" 2 }
{ "c" 3 }
{ "c" 4 }
}
答案 1 :(得分:1)
使用flatten1
中的sequences.extras
:
IN: scratchpad { 1 2 3 } { 8 9 } cartesian-product flatten1 .
{ { 1 8 } { 1 9 } { 2 8 } { 2 9 } { 3 8 } { 3 9 } }