2016-12-06 3 views
0

나는이 프로젝트에서 필자가 가능한 모든 조합을 네 글자 씩 찾아내는 방법을 쓰고있다. 나는 루프를 작성하여 i를 증가시키고 i를 4로 바꾸고 0, 1, 2 및 3을 대체하는 것에 대해 생각했습니다. 00이 나오지 않을 때 문제가 발생했습니다. 나는 i를 기본 5로 바꾸고 0이 나타날 때마다 무시하고 1, 2, 3 및 4를 대체 할 것을 고려했습니다. 그것은 나를 위해 작동하지만 문제는 매우 효율적이지 않다는 것입니다.순차적 카운터

는 여기에 내가 지금 가지고있는 최고의 코드입니다 :

import string 
digs = string.digits + string.letters 
def int2base(x, base): 
    if x < 0: sign = -1 
    elif x == 0: return digs[0] 
    else: sign = 1 
    x *= sign 
    digits = [] 
    while x: 
     digits.append(digs[x % base]) 
     x /= base 
    if sign < 0: 
     digits.append('-') 
    digits.reverse() 
    return ''.join(digits) 
for i in range(0,1000): 
    x=i 
    x=int2base(x, 5) 
    if str(x).count("0")==0: 
     print(i) 

그것이 인쇄 무엇을 인쇄하도록 내가 고칠 수있는 방법이 있나요,하지만 난 그냥 함수에 내가 연결해야합니까? 예제 입력 및 출력

0 -> a 
1 -> b 
2 -> c 
3 -> d 
4 -> aa 
5 -> ab 
6 -> ac 
7 -> ad 
8 -> ba 
9 -> bb 
10 -> bc 
11 -> bd 
12 -> ca 
13 -> cb 
14 -> cc 
15 -> cd 
16 -> da 
17 -> db 
18 -> dc 
19 -> dd 
20 -> aaa 
21 -> aab 
+0

: 요청 된 출력 결과를 사용하는 경우

digits = 'abcd' def column(n): result = [] while n: n, rem = divmod(n-1, len(digits)) result.append(digits[rem]) return ''.join(reversed(result)) 

당신이 찾고 있는지 여부를 확신 할 수 있도록 샘플 입력과 출력을 제공 할 수 있습니까? 조합, 순열, 또는 제품? – TigerhawkT3

+0

@ TigerhawkT3 물론, 내 게시물을 편집하고 예제를 추가했습니다. – chamington

답변

1

당신은 스프레드 시트의 열 번호를 원하는 : Get Excel-Style Column Names from Column Number

그 질문에 대답을 기반으로 다음

>>> for i in range(22): 
...  print i, '->', column(i+1) 
... 
0 -> a 
1 -> b 
2 -> c 
3 -> d 
4 -> aa 
5 -> ab 
6 -> ac 
7 -> ad 
8 -> ba 
9 -> bb 
10 -> bc 
11 -> bd 
12 -> ca 
13 -> cb 
14 -> cc 
15 -> cd 
16 -> da 
17 -> db 
18 -> dc 
19 -> dd 
20 -> aaa 
21 -> aab 
+0

감사합니다. 완벽하게 작동합니다. – chamington

-1

모듈 itertools.

import itertools 

for acombo in itertools.product('ABCD', repeat=4): 
    print acombo 
+0

이것은 원하는 샘플 출력과 일치하지 않습니다. – TigerhawkT3