2014-09-06 3 views
1

내가 그것을 정렬 후 일부 시퀀스처럼 체인 숫자가 많이 포함되어 있음을 볼 수 그래서, 조합에서 15 개 번호 목록을 생성 생성 된 코드를 인쇄 :피 체인 번호 목록

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 20] 

나는 그것을 제어 할 수있는 방법을 생각하기 위해 노력하고있어 및 인쇄는 최대 4 개 체인 번호로 나열

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 20] 

(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) >>>> 11 Chained numbers: 1 to 11. 
So it won't be stored in file.txt. 


[1, 2, 3, 6, 7, 8, 9, 11, 12, 16, 17, 18, 19, 22, 23] 

(1, 2, 3) >>>> 3 chained, OK 
(6, 7, 8, 9) >>>> 4 chained, OK 
(11, 12) >>>> 2 chained, OK 
(16, 17, 18, 19) >>>> 4 chained, OK 
(22,23) 2 chained, OK. 
So this list will be stored in the file 

너희들이 나에게 아이디어를 줄 수 있을까요? 빛? 당신이 쉽게 식별 할 수있다 연속 요소 사이의 차이에 체인을 변환 할 수 있습니다 경우

import itertools 
my_file = open('file.txt', 'w') 

ALL_25 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] 

for subset in itertools.combinations(ALL_25, 15): 
    sort_subsets = sorted(subset) 
    my_file.write("{0}\n".format(sort_subsets)) 
    print(sort_subsets) 
my_file.close() 
+2

나는 당신의 질문을 이해하지 않습니다. 예를 들어, 출력이'[1, 2, 3, 4, 5, 6, 7, 8, 9, 20] 9, 20]'또는'[1, 2, 3, 4, 9, 20] '또는 다른 것? "점프"를 강조 표시 하시겠습니까? '[1, 2, 3, 4, ..., 6, 7, 8, 9, 20]'또는'[1, 2, 3, 4, ..., 9, 20]'? – Bakuriu

+0

게시 할 때 뭔가 잘못되었습니다. 내가 txt 파일의 모든 조합을 저장 한 후에 25 가지 숫자에서 15 가지 조합을 많이 생성하는 코드가 있음을 설명하겠습니다. –

+0

그래서 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]와 같은 목록을 만듭니다. [1, 2, 3, 5, 6, 9, 10, 11, 12, 15, 16, 17, 18, 21, 25] 다음과 같이 최대 4 개의 체인 번호가있는 조합을 저장합니다. , (1, 2, 3)은 체인에 3 개의 숫자를 가지고 있고, (5, 6)은 2를 가지고 있습니다. (9, 10, 11, 12)는 4를가집니다. , 10, 11, 12, 13) 제거 될 것입니다 –

답변

1

: 내가 만든, 그것은 25의 목록에서 15 개 숫자의 가능한 모든 조합을 가진 파일을 생성

코드 증분 시퀀스 즉, [1,2,3,4,7,8][1,1,1,3,1]으로 변환됩니다. 또한 문자열로 변환하면 111 패턴을 더 쉽게 검색 할 수 있습니다.

import numpy as np           
import re             

def validate(seq):           
    stl = "".join(np.diff(seq).astype(str))     
    for x in re.findall("[1]+",stl):       
     if len(x)>3:           
      return False          
    return True            

print validate([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 20]) 
print validate([1, 2, 3, 6, 7, 8, 9, 11, 12, 16, 17, 18, 19, 22, 23]) 

출력은

False 
True 
+0

그러나 목록을 짧게하는 것처럼 보입니다. 여기서 내가하는 일은 일부 숫자와 가능한 모든 조합으로 txt 파일을 생성하는 것입니다. 파일에서 조합의 양을 줄이기 위해 연결된 일련의 숫자입니다. 그래서 내 코드가 잘 실행되고 파일에서 줄마다 목록을 생성합니다. 각 목록에는 다른 번호가 있습니다. 그래서 나는 단지 4 개의 숫자가 연결된 목록을 '제거'(파일에 저장하지 않기를 원합니다)하고 싶습니다. . –

+0

@CairoLievore, 둘 이상의 목록이 있고 순차적 번호가있는 목록을 모두 제거하고 싶습니까? 그때 당신의 질문을 업데이트 할 수 있습니까? –

+0

거의 내 코드가 목록을 생성하므로 출력하기 전에 각 생성 된 목록을 확인하고 파일에 저장하는 방법을 알아 내려고 노력하고 있습니다. –