주어진 문자의 문자반복을 얻어야 할 때 인덱스 값을 사용하여 반복을 출력하는 메소드를 정의한다.
예시
아래는 동일한 데모입니다.
def to_string(my_list): return ''.join(my_list) def lex_recurrence(my_string, my_data, last_val, index_val): length = len(my_string) for i in range(length): my_data[index_val] = my_string[i] if index_val==last_val: print(to_string(my_data)) else: lex_recurrence(my_string, my_data, last_val, index_val+1) def all_lex(my_string): length = len(my_string) my_data = [""] * (length+1) my_string = sorted(my_string) lex_recurrence(my_string, my_data, length-1, 0) my_string = "MQ" print("The string is :") print(my_string) print("All permutations with repetition of " + my_string + " are...") all_lex(my_string)
출력
The string is : MQ All permutations with repetition of MQ are... MM MQ QM QQ
설명
-
목록을 매개변수로 받아 모든 값을 결합하여 반환하는 'to_string'이라는 메서드가 정의되어 있습니다.
-
문자열, 인덱스 값을 매개변수로 사용하는 'lex_recurrence'라는 또 다른 메서드가 정의되어 있습니다.
-
문자열의 길이에 대해 반복하고 마지막 값과 인덱스 값이 동일한지 확인합니다.
-
맞으면 조합 중 하나로 출력됩니다.
-
그렇지 않으면 인덱스 값을 증가시켜 메소드를 다시 호출합니다.
-
'sorted' 메서드를 사용하여 문자열을 정렬하고 이전 메서드를 다시 호출하는 'all_lex'라는 또 다른 메서드가 정의되어 있습니다.
-
메서드 외부에서 문자열이 정의되고 콘솔에 표시됩니다.
-
출력은 콘솔에 표시됩니다.