2012-02-19 10 views
3

私はちょうどFactorに取り掛かり始めています。私は、2つの配列のデカルト積を計算したい:私は見たいと思って何Factorの2つのシーケンスのデカルト積を計算する

{ 1 2 3 } 
{ 8 9 } 

は、配列の配列である:私はcartesian-product言葉を使用する場合

{ { 1 8 } { 1 9 } { 2 8 } { 2 9 } { 3 8 } { 3 9 } } 

、私はの配列の配列を取得しますシーケンス:

{ { { 1 8 } { 1 9 } } { { 2 8 } { 2 9 } } { { 3 8 } { 3 9 } } } 

私も[ 2array ] cartesian-mapを試しましたが、同じことがあります。最後に、私は[ 2array ] cartesian-eachを試しましたが、スタック上に別々にプッシュされています。少なくともフラットですが、それらをすべて1つの配列に入れてください。

どうすればよいですか?

答えて

4

私は(自分自身を始める)これを行い、既存のライブラリの方法がありますかどうかわからないんだけど、あなたはappendreducecartesian-productを構成することによってそれを行うことができます。

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

使用flatten1sequences.extrasから:

IN: scratchpad { 1 2 3 } { 8 9 } cartesian-product flatten1 . 
{ { 1 8 } { 1 9 } { 2 8 } { 2 9 } { 3 8 } { 3 9 } } 
関連する問題