이전에 단순한 python 프로그램을 사용하여 드라이브에 대한 단일 솔루션을 강요했습니다."drive ya nuts"퍼즐에 대한 모든 고유 한 조합 생성
alt text http://www.tabbykat.com/Drive%20ya%20Nuts%20Travel%20Sol%20c.jpg
퍼즐은 숫자 그들에 1-6 7 개 육각형로 구성되며, 각 숫자는 다음 조각에 같은 번호에 인접 있도록 모든 조각을 정렬되어야합니다.
퍼즐은 ~1.4G
고유하지 않은 가능성을 가지고 : 당신이 순서에 의해 조각을 정렬 할 수 7!
옵션이 있습니다 (예를 들어, center=0
, top=1
, ... 시계 방향으로 순서 계속). 조각을 정렬 한 후에는 각 조각을 6 가지 방법으로 회전 할 수 있습니다 (각 조각은 육각형입니다). 따라서 7 조각의 주어진 순열에 대해 6**7
가능한 순환을 얻을 수 있습니다. 총계 : 7!*(6**7)=~1.4G
가능성. 각각의 가능한 솔루션은 5에 해당하기 때문에 당신이 6 가능성의 총 수를 분할해야한다 그러나
def rotations(p):
for i in range(len(p)):
yield p[i:] + p[:i]
def permutations(l):
if len(l)<=1:
yield l
else:
for perm in permutations(l[1:]):
for i in range(len(perm)+1):
yield perm[:i] + l[0:1] + perm[i:]
def constructs(l):
for p in permutations(l):
for c in product(*(rotations(x) for x in p)):
yield c
이, 퍼즐은 ~0.2G
독특한 가능한 해결책을 가지고 있습니다 : 다음 파이썬 코드는이 가능한 솔루션을 생성 다른 솔루션 (단순히 전체 퍼즐을 1/6 회전).
유일한 퍼즐을 생성하는 더 좋은 방법은이 퍼즐을위한일까요?
~ 1.4G/6 = ~ 2M이 표시되지 않습니다. ~ 200M을 의미 했습니까? – Thomas
@ 토마스 조각을 배열하는 방법은 1.4G가 있지만 모두가 해결책은 아닙니다. –