2012-02-19 2 views
3

저는 방금 Factor으로 시작합니다. 나는 cartesian-product 단어를 사용하는 경우Factor에있는 두 시퀀스의 데카르트 곱을 계산하십시오

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

, 나는 일련의 순서를 얻을 :

{ 1 2 3 } 
{ 8 9 } 

내가보고 싶은 것은 시퀀스의 순서는 다음과 같습니다 나는 두 시퀀스의 직교 제품을 계산하려면 시퀀스 :

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

또한 [ 2array ] cartesian-map을 시도했다, 그러나 나는 같은 일을 얻는다. 마지막으로 [ 2array ] cartesian-each을 시도했지만 각 쌍을 스택에 별도로 푸시했습니다. 적어도 평평하지만, 나는 그것들을 모두 하나의 배열로 원한다.

어떻게하면됩니까?

답변

4

나는이 (단지 점점 자신을 시작)하지 기존 라이브러리 방법이 있다면 모르겠지만, 당신은 appendreducecartesian-product을 구성하여 작업을 수행 할 수 있습니다 sequences.extras에서

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

사용 flatten1 :

IN: scratchpad { 1 2 3 } { 8 9 } cartesian-product flatten1 . 
{ { 1 8 } { 1 9 } { 2 8 } { 2 9 } { 3 8 } { 3 9 } } 
관련 문제