3

Factorに手を出し始めたところです。2 つのシーケンスのデカルト積を計算したい:

{ 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ましたが、各ペアが別々にスタックにプッシュされます。少なくともフラットですが、それらをすべて 1 つの配列にまとめたいと思います。

どうすればいいですか?

4

2 に答える 2

4

これを行う既存のライブラリメソッドがあるかどうかはわかりませんが(自分で始めたばかりです)、andで構成cartesian-productすることで実行できます:appendreduce

--- 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 }
}
于 2012-02-21T02:26:44.183 に答える
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 } }
于 2013-05-27T12:30:50.767 に答える