2013-11-26 1 views

답변

8

이 설명서에있다 : http://docs.python.org/2.7/library/itertools.html#itertools.permutations

요소가없는 자신의 가치에 자신의 위치를 ​​기반으로 독특한로 처리됩니다. 따라서 입력 요소가 고유하면 각 순열에 반복 값이 없습니다.

즉, itertools.permutations('000')은 행복하게 3을 제공합니다. = 6 결과, 모두가 '000'입니다.

는 자신에 대한 참조 : 당신은 비트 맵으로 문제를 해석하면 http://ideone.com/gzqolT


귀하의 문제가 해결 될 수 있습니다. itertools.combinations(S,r)S의 모든 하위 집합에 r 개의 항목을 제공합니다. 예 : S = range(7)r = 3

A full working solution

: 설명

list('{0:07b}'.format(sum(subset)) 
    for subset in itertools.combinations((2**s for s in range(7)), 3)) 

조금 :

  • (2**s for s in range(7)) 2~6^2 개까지의 모든 힘의 발생이다.
  • itertools.combinations(…, 3)은 2의 이들 3 개의 항목을 갖는 모든 서브 세트를 발견한다.
  • sum(subset)은 예를 들어, = 7.
  • '{0:07b}'.format(…)[1,2,4] 실제로 제
+0

개까지의 길이로 제로 패딩되어 이진수로 입력 INT를 포맷, 그들이 [조합] 원하는 같은데 (HTTP : //docs.python .org/2.7/library/itertools.html # itertools.combinations) – SethMMorton