세트의 반복 된 주어진 수의 데카르트 곱을 반환하는 함수를 구현하고 싶습니다. 예를반복을 건너 뛸 수있는 데카르트 곱을 구현합니다.
input: {a, b}, 2
output:
aa
ab
bb
ba
input: {a, b}, 3
aaa
aab
aba
baa
bab
bba
bbb
를 들어 내가 같은 세트를 추가, 그것은 먼저 다음 세트의 출력에서, 2 개 세트 ("AB", "AB)에 대한 cartesion 제품을하고 구현할 수있는 유일한 방법은. 여기 의사는하지만 -code는 :.
function product(A, B):
result = []
for i in A:
for j in B:
result.append([i,j])
return result
function product1(chars, count):
result = product(chars, chars)
for i in range(2, count):
result = product(result, chars)
return result
내가 원하는 것은 전에 모든 세트를 계산하지 않고, 직접 마지막 세트를 계산 시작하는 나에게 비슷한 결과를 줄 것이다이 가능, 또한 솔루션입니다, 그러나 그것은 아니다 데카르트 제품이 허용됩니다. 대부분의 범용 프로그래밍 언어를 읽는 데 문제가 없으므로 코드를 게시해야한다면 모든 언어로 할 수 있습니다. 편안한 느낌.
이미 갖고있는 문제는 무엇입니까? – Amit
위의 알고리즘이 이전 세트와 작동하기 때문에 반복을 건너 뛰고 싶습니다. 따라서 {a, b} 8을 생성하려면 먼저 pc가 {a, b} x {a, b} a, b} x {a, b}) x {a, b} ... 8 시까 지 –
실제로 병목 현상을 해결하려고합니까? 아니면 단순히 "재미를 위해 최적화"하고 있습니까? – Amit