상자가 m 개 있고 m 색으로 채색하고 싶습니다. 나는 색깔의 반복을 허용하고 싶다. 예를 들어 4 개의 박스와 2 개의 색상이 주어진다. 도 1 및 2에 의해 색을 나타내는 우리 그들 색으로 다음과 같은 방법을 예를 들어 [1,1,1,1]은 최대 제 1 색 및 제 2 색 박스로 착색 한 상자 수단m 색으로 n 개의 상자 채색
[[1, 1, 1, 1], [1, 1, 1, 2], [1, 1, 2, 1], [1, 1, 2, 2], [1, 2, 1, 1],
[1, 2, 1, 2], [1, 2, 2, 1], [1, 2, 2, 2], [2, 1, 1, 1], [2, 1, 1, 2],
[2, 1, 2, 1], [2, 1, 2, 2], [2, 2, 1, 1], [2, 2, 1, 2], [2, 2, 2, 1],
[2, 2, 2, 2]]
마지막 상자. [1, 1, 2, 1] 컬러 1 착색 박스 2 및 4를 의미하지만이를 위해 컬러 2.
와 박스 (3)는 I 함수이다
def recursive_fun(number_of_boxes,number_of_colors):
possible_colors=range(1,number_of_colors+1)
if number_of_boxes==1:
return [[i] for i in possible_colors]
else:
output=[]
y=recursive_fun(number_of_boxes-1,number_of_colors)
for i in y:
for m in possible_colors:
output.append(i+[m])
return output
다음 함수를 정의하면서 그러나 나는 이것을하는 더 효율적인 방법을 원합니다. itertools 패키지를 사용하여이 작업을 수행 할 수 있습니까?
https://docs.python.org/2/library/itertools.html#itertools.product 반복과 number_of_colors –
로 설정하면 수를 얻을시겠습니까 'n' 박스를'm' 컬러로 채색하는 가능한 방법은 뭔가요? 그렇다면 수학 문제입니다. 가능한 모든 조합을 원하면 'n'과 'm'의 더 큰 값을 사용할 수 없습니다. –