【问题标题】:Computing Cartesian product of two sequences in Factor在 Factor 中计算两个序列的笛卡尔积
【发布时间】:2012-02-19 04:46:30
【问题描述】:

我刚刚开始涉足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,但我将每一对单独推入堆栈。至少它是平的,但我希望它们都在一个阵列中。

我该怎么做?

【问题讨论】:

    标签: cartesian-product factor-lang


    【解决方案1】:

    我不确定是否存在执行此操作的现有库方法(我自己刚刚开始),但您可以通过将 cartesian-productappendreduce 组合来做到这一点:

    --- 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 }
    }
    

    【讨论】:

      【解决方案2】:

      使用来自sequences.extrasflatten1

      IN: scratchpad { 1 2 3 } { 8 9 } cartesian-product flatten1 .
      { { 1 8 } { 1 9 } { 2 8 } { 2 9 } { 3 8 } { 3 9 } }
      

      【讨论】:

        猜你喜欢
        • 2021-11-19
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 2011-03-24
        • 2017-03-07
        • 1970-01-01
        • 2013-04-20
        • 2021-01-25
        相关资源
        最近更新 更多