가능한 중복 :
Generating all Possible CombinationsLINQ 문에서 N 열거 형?
잘 모르겠어요 어떻게 표현 질문에; 하지만 LINQ 문을 사용하여 해결할 수있는 어리석은 논리 퍼즐 작업을하고있었습니다. 관련 코드는 다음과 같이 보았다 :
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
from myD in Enumerable.Range(1, 40)
where myA + myB + myC + myD == 40
&& myA <= myB
&& myB <= myC
&& myC <= myD
select new[] {myA, myB, myC, myD})
그래서 그것은 기본적 WHERE 절에 조건을 충족 A, B, C의 D의 모든 조합을 생성합니다.
내가 지금하려는 것은 일반화 된 것이므로 단지 4 개가 아닌 N 개의 값으로 똑같은 작업을 수행 할 수 있습니다. 예를 들어, 3 개 값 - 해당하는 코드는 다음과 같습니다 당연히
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
where myA + myB + myC == 40
&& myA <= myB
&& myB <= myC
select new[] {myA, myB, myC})
, 나는 코드를 수정하고 싶지 않아 - 내가 전화 정수를 제공하고 올바른을 반환 한 할 수있는 기능을 원하는 목적.
몇 가지 잘못된 시도를했습니다. 그러나 나는 그런 것을하는 법을 정말로 볼 수 없다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?
에릭 Lippert의이 http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-cartesian- ([이에 블로그] product-with-linq.aspx)를 사용하면 많은 시퀀스의 제품을 계산할 수 있습니다. 도움이 될 수도 있습니다. –
@AnthonyPegram - 완벽합니다. 정확히 내가 뭘 찾고 있어요. 답변을 게시하고 싶다면 동의하겠습니다. –
* 내 대답이 아닙니다. ;) 크레딧을 지불해야하는 곳에 크레딧을주고 싶다면 [try here] (http://stackoverflow.com/a/3098381/414076) –