>source

12345와 같은 정수가 있다고 가정합니다. 파이썬에서 가능한 숫자로 나누고 싶습니다. {[12345], [1234,5], [123,45],[12,345],[1,2345],[123,4,5],[12,34,5],....,[1,2,3,4,5]}

  • 답변 # 1

    재귀 적 접근 방식을 취할 수 있습니다.

    def splitNum(N):
        yield [N]
        D = 10
        while D < N:
            left,right = divmod(N,D)
            for nums in splitNum(left): yield nums+[right]
            D *= 10        
    print(*splitNum(12345))
    [12345] [1234, 5] [123, 4, 5] [12, 3, 4, 5] [1, 2, 3, 4, 5] [1, 23, 4, 5] [12, 34, 5] [1, 2, 34, 5] [1, 234, 5] [123, 45] [12, 3, 45] [1, 2, 3, 45] [1, 23, 45] [12, 345] [1, 2, 345] [1, 2345]
    
    

  • 답변 # 2

    def get_all_divisions(n):
        if n < 10:
            return [[n]]
        all_part_div = get_all_divisions(n//10)
        ldigit = n % 10
        all_divs = []
        for div in all_part_div:
            div1 = div.copy()
            div1.append(ldigit)
            all_divs.append(div1)
            div2 = div.copy()
            div2[-1] = (div2[-1] * 10) + ldigit
            all_divs.append(div2)
       return all_divs
    
    

관련 자료

  • 이전 C ++ 파일 변환기 프로그램
  • 다음 c++ - Google 테스트 테스트 이름 혼동