2015-01-19 2 views
0

A : (1,2,3) (4,2,1) (8,3,4) (4,3,3) (7,2 5) (8,4,3)정확하게 돼지의 작품을 평평하게하는 방법

B : (2,4) (8,9) (1,3) (2,7) (2,9) (4,6) (4,9)

C : (1, {(1,2,3)}, {(1,3)}) (4, {(4,2,1), (4,3,3) (8,9)})

안녕 친구, (4,6), (4,9)}) (8, 위의 파일 A, B 및 C에 대해서는 누구나 아래 진술의 결과가 무엇인지 설명 할 수 있습니까? X = 각 C 생성 평면 (A (($ 0, $ 1)), 평평한 (B $ 1);

평평한 부분이 어떻게 작동하는지 정말 어렵게 알고 있습니다. 미리 감사드립니다.

답변

2

더 나은 이해를 얻으려면 우선 관계 C에 대한 설명을하고 스키마를 확인하십시오. 엄지 손가락 규칙으로 다음과 같은 기억, 이제

describe C; 
C: {A::group: bytearray, A: {()}, B: {()}} 

당신이 함께 편평한와 C에 foreach 문을 다하고 있습니다 - - 이 비슷한을해야 편평한와 foreach는 가방에 모든 레코드의 크로스 제품을 생산 generate 문에있는 다른 모든 표현식과 함께.

지금 관계 C에서 첫 번째 튜플을 고려 할 수 있습니다

(1,{(1,2,3)},{(1,3)}) 

더 나은 이해를 위해 나는

(C::1,{A::(1,2,3)},{B::(1,3)}) 
A.($0,$1) = (1,2) 
B.($1) = (3) 

으로이를 나타낼 수 있습니다 단지에 대해 우리가 하나 개의 용어 가방의 모든 레코드에 대한 각 그래서 따라서 하나의 십자가 제품 만이 반복을 위해 하나의 튜플 만 출력됩니다. 즉, (1,2,3)

이제 relat의 두 번째 튜플을 고려해보십시오 이제 제 튜플과 어떻게 볼 수

(C::4,{A::(4,2,1),A::(4,3,3)},{B::(4,6),B::(4,9)}) 
A.($0,$1) = (4,2) and (4,3) 
B.($1) = (6) and (9) 
--As output we will see cross product of all of the other expressions in the generate statement, hence we get 
(4,2,6) (4,2,9) (4,3,6) (4,3,9) 

- 아래와 같이 이온 C는 그들의 외적 그러므로 우리는 출력 4 개 레코드를 볼 것이며, 2 × 2 = 4 인 것, B는 두 개의 레코드를 보유하고, 두 개의 레코드를 가지고 관계 C에서 여기 A는 2 개의 레코드를 가지고 B는 단 하나의 레코드를 가지며, 2x1 = 2 출력 행을 얻습니다. (8,3,9) (8,4,9)

" 프로그래밍 돼지 "

희망이 도움이됩니다.