숫자 n이 있다고 가정합니다. n x n 크기의 알파벳 rangoli를 만들어야 합니다. n은 1과 26 사이에 있어야 하며 n이 26일 때 a에서 시작하여 z에서 끝납니다.
따라서 입력이 5와 같으면 출력은
--------e-------- ------e-d-e------ ----e-d-c-d-e---- --e-d-c-b-c-d-e-- e-d-c-b-a-b-c-d-e --e-d-c-b-c-d-e-- ----e-d-c-d-e---- ------e-d-e------ --------e--------
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n-1에서 0 사이의 i에 대해 1만큼 감소, do
- 0~i-1 범위의 j에 대해 수행
- "--" 인쇄
- n-1 ~ i+1 범위의 j에 대해 1 감소, do
- ASCII가 j+97인 문자를 인쇄하고 끝에 "-"를 추가로 인쇄
- i에서 n-1 사이의 j에 대해 다음을 수행합니다.
- j가 n-1과 같지 않으면
- ASCII가 j+97인 문자를 인쇄하고 끝에 "-"를 추가로 인쇄
- 그렇지 않으면
- ASCII가 j+97인 인쇄 문자
- j가 n-1과 같지 않으면
- 0 ~ 2*i - 1 범위의 j에 대해
- 끝에 "-" 인쇄
- 다음 줄로 이동
- 0~i-1 범위의 j에 대해 수행
- 1에서 n-1 사이의 i에 대해 다음을 수행합니다.
- 0~i 범위의 j에 대해
- "--" 인쇄
- n-1 ~ i+1 범위의 j에 대해 1 감소, do
- ASCII가 j+97인 문자를 인쇄하고 끝에 "-"를 추가로 인쇄
- i에서 n-1 사이의 j에 대해 다음을 수행합니다.
- j가 n-1과 같지 않으면
- ASCII가 j+97인 문자를 인쇄하고 끝에 "-"를 추가로 인쇄
- 그렇지 않으면
- ASCII가 j+97인 인쇄 문자
- j가 n-1과 같지 않으면
- 0 ~ 2*i - 1 범위의 j에 대해
- 끝에 "-" 인쇄
- 다음 줄로 이동
- 0~i 범위의 j에 대해
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
def solve(n): for i in range(n-1,-1,-1): for j in range(i): print(end="--") for j in range(n-1,i,-1): print(chr(j+97),end="-") for j in range(i,n): if j != n-1: print(chr(j+97),end="-") else: print(chr(j+97),end="") for j in range(2*i): print(end="-") print() for i in range(1,n): for j in range(i): print(end="--") for j in range(n-1,i,-1): print(chr(j+97),end="-") for j in range(i,n): if j != n-1: print(chr(j+97),end="-") else: print(chr(j+97),end="") for j in range(2*i): print(end="-") print() n = 8 solve(n)
입력
8
출력
--------------h-------------- ------------h-g-h------------ ----------h-g-f-g-h---------- --------h-g-f-e-f-g-h-------- ------h-g-f-e-d-e-f-g-h------ ----h-g-f-e-d-c-d-e-f-g-h---- --h-g-f-e-d-c-b-c-d-e-f-g-h-- h-g-f-e-d-c-b-a-b-c-d-e-f-g-h --h-g-f-e-d-c-b-c-d-e-f-g-h-- ----h-g-f-e-d-c-d-e-f-g-h---- ------h-g-f-e-d-e-f-g-h------ --------h-g-f-e-f-g-h-------- ----------h-g-f-g-h---------- ------------h-g-h------------ --------------h--------------