다음 문자열을보십시오. 패턴을 알 수 있습니까?
아베 노프 DC GQI MHRJ LKJI SK DTL CUM BAZYXWV N EO DP CQ BAZYXWVUTSR
일부 사람들이 알 수 있듯이, 기본적으로 행 / 열 사이의 거리가 1 공백 / 개행으로 점차 증가하는 알파벳의 나선입니다.
엄격한 정의
- 카운터 c 가 있는데, 처음에는 0입니다.
- 알파벳 의 첫 c + 1 자를 왼쪽에서 오른쪽으로 씁니다
A
. 그런 다음 위에서 아래로 (c + 1) (c + 2) / 2 자 (add
B
) :AB
.왼쪽에서 오른쪽으로 다음 (c + 1) (c + 2) / 2 (추가
C
) :AB C
그리고 아래에서 위로, 다음 c + 1 문자 (추가
D
) :AB DC
사이클의 끝에 도달했습니다. 따라서 c (1이 됨)를 증가시킵니다 . 그런 다음 첫 번째 단계부터 다시 시작합니다. 단, 차이점 은 알파벳 의 첫 번째 c + 1 자를 사용하는 대신 이주기의 마지막 요소에서 시작 하여 다음 c + 1을 사용한다는 것입니다 (
D
이 경우EFG...
)로 계속 진행 합니다.Z
에 도달 하면 에서 순환됩니다A
.
직무
정수 N (1 인덱싱의 경우 양수 또는 0 인덱싱의 경우 음수가 아님)이 주어지면 나선 의 첫 번째 N 사이클을 출력합니다 .
규칙
소문자 나 대문자 알파벳을 사용할 수 있지만, 선택은 일관되어야합니다 (그중 하나만 사용하십시오, 혼합은 허용되지 않습니다).
이러한 허점 은 기본적으로 금지되어 있지만 모든 프로그래밍 언어 에서 표준 방법 중 하나를 통해 입력을 받고 출력을 제공 할 수 있습니다 .
허용 가능한 출력 형식 : 여러 줄 문자열, 줄을 나타내는 문자열 목록, 여러 문자 목록을 포함하는 목록, 각각 한 줄을 나타내는 것 또는 기타 적절하다고 생각되는 것. 첫 번째 형식을 선택하지 않으면 예쁘게 인쇄 된 코드 버전을 포함시키는 것이 좋습니다.
이것은 code-golf 이므로 요구 사항을 충족시키는 가장 짧은 코드 (바이트 단위) (각 언어로)가 승리합니다!
테스트 사례
입력 정수는 줄 바꿈을 통해 해당 출력으로 분리되고 테스트는 대시를 사용하여 분리됩니다. 이것들은 1 인덱스입니다.
1 AB DC -------- 2 아베 프 DC G MH LKJI -------- 삼 아베노 DC GQ MHR LKJI S DT CU BAZYXWV ------- 4 아베 노프 DC GQI MHRJ LKJI SK DTL CUM BAZYXWV N EO DP CQ BAZYXWVUTSR ------- 5 ABEFNOPEFGHFGHIJ DC GQIK MHRJL LKJI SKM DTLN CUMO BAZYXWV NP EOQ DPR CQS BAZYXWVUTSR T RU QV PW 소 NMLKJIHGFEDCBAZY ------ 6 ABEFNOPEFGHFGHIJSTUVWX DC GQIKY MHRJLZ LKJI SKMA DTLNB 쿠모 BAZYXWV NPD EOQE DPRF CQSG BAZYXWVUTSR TH 루이 QVJ PWK OXL NMLKJIHGFEDCBAZY M SN RO QP PQ 또는 NMLKJIHGFEDCBAZYXWVUTS