소개
대부분의 코드 골퍼는 제출에 설명을 추가하므로 진행 상황을 이해하기가 더 쉽습니다. 일반적으로 코드 라인은 왼쪽에 있으며 해당 설명은 오른쪽에 일종의 구분 기호가 있습니다. 예쁘게 보이도록 구분 기호는 모두 같은 열에 있습니다. 또한 긴 설명 텍스트는 일반적으로 다음 줄로 줄 바꿈되므로 독자는 모든 내용을 읽기 위해 가로로 스크롤 할 필요가 없습니다.
그러나 당신이 미친 골프를했기 때문에이 설명을 편집하고 싶을 때 종종 설명을 다시하기 위해 시간을 소비하게됩니다. 이것은 매우 반복적 인 작업이므로이를위한 프로그램을 작성하려고합니다.
도전
설명과 구분 기호가있는 몇 줄의 코드가 주어지면 멋진 형식의 코드를 설명과 함께 출력하십시오.
예
입력
shM-crz1dc4. "ANDBYOROF #z = 입력 rz1 # 입력을 대문자로 변환 공백으로 cd # split 입력 c4. "ANDBYOROF # 묶음 문자열에서 무시할 단어 목록을 만듭니다. -단어를 걸러 내십시오 hM #은 모든 단어의 첫 글자 만받습니다 # 하나의 문자열로 결합
산출
shM-crz1dc4. "ANDBYOROF #z = 입력 rz1 # 입력을 대문자로 변환 공백으로 cd # split 입력 c4. "ANDBYOROF # 압축 된 문자열에서 단어 목록을 만듭니다. # 무시 -단어를 걸러 내십시오 hM #은 모든 단어의 첫 글자 만받습니다 # 하나의 문자열로 결합
이 코드의 기능을 알 수있는 첫 번째 쿠키입니다.
포맷 알고리즘
- 가장 긴 코드 행을 찾습니다 (설명과 코드와 구분 기호 사이의 공백 제외).
- 이 코드 라인 뒤에 5 개의 공백을 추가하고 해당 구분 기호를 설명과 함께 추가하십시오. 이것은 이제 참 조선입니다.
- 분리자가 모두 같은 열에 있도록 다른 모든 줄을이 참 조선으로 조정하십시오.
- 다음과 같은 방법으로 93 자보다 긴 모든 줄을 줄 바꿈으로 묶습니다.
- 끝이 93 열 이하인 마지막 단어를 찾으십시오.
- 이 단어 다음에 나오는 모든 단어를 가져 와서 선행 구분 기호와 올바른 간격으로 새 줄로 줄 바꿈하십시오. 이 두 단어 사이의 공백은 삭제해야하므로 첫 번째 줄은 단어 문자로 끝나고 두 번째 줄은 구분 기호 뒤에서 시작합니다.
- 결과 행이 여전히 93 자보다 긴 경우 모든 행이 94 자 미만이 될 때까지 동일한 행을 다시 수행하십시오.
노트
- 단어는 공백이 아닌 문자로 구성됩니다. 단어는 하나의 공백으로 구분됩니다.
- 단어 줄 바꿈은 항상 가능합니다. 이것은 단어가 너무 길어서 포장이 불가능하다는 것을 의미합니다.
- 입력은 인쇄 가능한 ASCII 만 포함하며 후행 공백은 없습니다.
- 구분 기호는 한 줄에 한 번만 나타납니다.
- 설명은 길이에 제한이 없지만 구분 기호와 코드는 최대 길이의
93 - 5 = 87
문자 만 결합 할 수 있습니다 . 5 문자는 코드와 구분 기호 사이의 공백입니다. 코드와 구분 기호는 항상 하나 이상의 문자입니다. - 입력에 빈 줄이 포함될 수 있습니다. 그것들은 어떤 문자도 포함하지 않을 것입니다 (여러 줄 문자열로 입력을 받으면 줄 바꿈 제외). 빈 줄도 출력에 있어야합니다.
- 모든 줄에는 코드, 구분 기호 및 설명이 있습니다. 빈 줄은 예외입니다.
- 사전 처리되지 않은 한 합리적인 형식으로 입력 할 수 있습니다. 어떤 것을 사용하는지 답을 명확하게하십시오.
- 출력은 여러 줄 문자열이거나 문자열 목록 일 수 있습니다.
규칙
- 기능 또는 전체 프로그램이 허용됩니다.
- 입 / 출력의 기본 규칙 .
- 표준 허점이 적용됩니다.
- 이것은 code-golf 이므로 바이트 수가 가장 적습니다. Tiebreaker는 이전에 제출되었습니다.
테스트 사례
여기에 입력 형식은 행을 나타내는 문자열 목록과 구분 기호에 대한 단일 문자열입니다. 둘 다 쉼표로 구분됩니다. 출력은 문자열 목록입니다.
[ 'shM-crz1dc4. "ANDBYOROF # z = 입력', '', 'rz1 # 입력을 대문자로 변환', 'cd # 공백으로 입력 입력', 'c4."ANDBYOROF # 묶음에서 단어 목록을 만듭니다. 무시 될 문자열 ','-# 해당 단어를 걸러냅니다 ','hM # 모든 단어의 첫 글자 만 가져옵니다 ','# 하나의 문자열로 묶습니다 '', "#"-> [ 'shM-crz1dc4 . "ANDBYOROF # z = 입력 ',' ','rz1 # 입력을 대문자로 변환 ','cd # 공백에서 입력 분리 ','c4."ANDBYOROF # 압축 문자열에서 단어 목록을 작성합니다. ' , '# 무시 됨', '-# 단어를 걸러냅니다 ','hM # 모든 단어의 첫 글자 만 가져옵니다 ','# 한 줄로 묶습니다 '] [ 'codecodecode e # Explanation', 'sdf dsf sdf e # A 매우 매우 매우 매우 매우 매우 긴 매우 긴 매우 긴 매우 긴 매우 긴 긴 긴 설명과 계속 점점 길어짐', '', '일부 더 많은 코덱 번호와 더 많은 설명 '], "e #"-> ['codecodecode e # Explanation ','sdf dsf sdf e # A 매우 매우 매우 매우 매우 매우 긴 매우 긴 long long long ','e # long long long long long long 설명과 계속 길어짐 ','e # and long ',' ','일부 더 많은 코드 e # 및 더 많은 설명 ']
행복한 코딩!
length of the longest code-line + 5
있습니다. 이것은 설명이 포함 된 줄에도 적용되었습니다.