이 질문은 Kevin Cruijssen의 질문에서 영감을 받았습니다 .
이제 카펫을 깔았으니 롤백하고 싶습니다. 당신의 임무는 문자열을 가져 와서이 문자열로 만든 나선형을 반환하는 프로그램을 작성하는 것입니다 (측면에서 본 롤 카펫을 나타냄).
카펫을 압연하는 한 단계의 절차는 다음과 같습니다. 내가 의미하는 바를 보여주는 예가 있습니다. 예제는 이해를 돕기 위해 부분적으로 롤링 된 카펫으로 시작합니다.
ac
rpet
- 카펫의 "꼬리"에서 "머리"를 분리하십시오. 머리는 지금까지 말려 진 것이고, 꼬리는 말아 남을 것입니다.
Head: ac Tail:
rp et
- 헤드를 시계 방향으로 90 ° 회전합니다.
Rotated head: ra Tail (unchanged):
pc et
- 새 머리 너비 (여기
2)가 꼬리 길이 (여기2) 보다 작거나 같은 경우- 그런 다음 꼬리 위에 놓으십시오
- 그렇지 않으면, 카펫은 (단계의 시작과 마찬가지로) 롤링되었습니다.
New carpet: ra
pc
et
필요한만큼 절차를 반복하십시오.
카펫 롤링의 모든 단계를 보여주는 두 가지 예 :
carpet
c
arpet
ac
rpet
ra
pc
et
0123456789
0
123456789
10
23456789
21
30
456789
432
501
6789
일부 정밀도 :
- 모든 중간 단계를 표시 할 필요는없고 롤 카펫 만 표시 할 수 있습니다 (예 : 결과를 계산하는 반복적이지 않은 방법을 찾으면 완벽 함). 또한 선행 공백을 인쇄 할 필요가 없습니다. 위의 예에서는 물건을 정렬하기 위해 보여줍니다.
- 입력은 문자열, char의 목록 / 배열
- 출력은 stdout 또는 파일로 인쇄됩니다.
- 입력은 훌륭합니다. 길이는 1 자 이상이고 최대 상수는 충분히 작아서 문제를 일으키지 않지만 프로그램에서 상수를 사용할 수는 없습니다. 문자열의 내용은 단지 좋은 문자 ([a-zA-Z0-9])이며 원하는대로 인코딩합니다.
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다. 코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트 링크를 추가하십시오.
- 또한 필요하다고 생각되면 답변에 대한 설명을 추가하십시오.
ProgrammingPuzzlesAndCodeGolf-1보다 큰 최종 테일 길이가 저를 넘어 뜨 렸습니다.
print내부에서 사용할 수 없으므로 Python 2 답변을 삭제 했습니다 lambda.