나는 SO에 대해이 질문을 보았고 좋은 골프 도전을 할 것이라고 생각했습니다. 그래서 여기 있습니다 :
도전:
일련의 문자열을 한 줄에 하나씩 읽고 각 문자열이 동일한 문자를 갖는 모든 위치의 목록을 출력하는 프로그램을 작성하십시오.
입력과 출력:
입력은 하나 이상의 인쇄 가능한 공백이 아닌 ASCII 문자로 구성되며 각 줄은 개행으로 구성됩니다. 모든 입력 라인의 길이가 같다고 가정 할 수 있습니다 . 줄 바꿈은 입력의 일부로 간주 되지 않습니다 (즉, 일치하는 문자로 출력해서는 안 됨).
입력 예 (SO 질문에서 뻔뻔스럽게 도난) :
abcdefg
avcddeg
acbdeeg
입력을 읽은 후 프로그램은 일치하는 각 열의 위치와 포함 된 문자를 인쇄해야합니다. (일치하는 열이없는 것으로 조기에 판별 할 수있는 경우 프로그램이 추가 입력을 읽는 것을 중지 할 수는 있지만 필요하지는 않습니다.) 합리적인 출력 형식이 허용됩니다. 특히 위치에 대해 0 기반 또는 1 기반 색인을 사용할 수 있습니다.
위 입력의 출력 예 (0 기반 색인 사용) :
0: a
3: d
6: g
채점 :
이것은 코드 골프이므로 최단 답변이 이깁니다. 동점 일 경우 다음과 같은 추가 기능을 위해 소수 동점 차단 문자가 제공 될 수 있습니다.
- 길이가 다른 입력 라인을 올바르게 처리하기위한 -½ 자 (출력에는 최단 입력 라인의 끝을 지난 위치가 포함되어서는 안됩니다.)
- 임의의 UTF-8 인코딩 유니 코드 문자로 구성된 입력을 올바르게 처리하기위한 −¼ 문자
영감을 얻으려면 SO 질문에서 골프를 타지 않은 해결책을 찾을 수 있습니다 (위 참조).
설명 :
에서와 같이 단순히 위치와 문자를 연결하는 것은 "합리적인 출력"으로 계산
0a3d6g되지 않습니다 . 명확하게 구문 분석 할 수 있도록 출력의 각 요소 사이에 일종의 구분 기호 (예 : 공백)를 제공해야합니다.입력은 표준 입력 스트림 (
stdin)에 제공되거나 선택한 언어에 가장 적합한 텍스트 파일 입력 메커니즘을 사용합니다. (선택한 언어 에 파일 입력을위한 자연스러운 메커니즘 이없는 경우 가장 가까운 것으로 보이는 모든 것을 수행하십시오.)읽을 데이터가 더 이상 없으면 (즉, 파일 끝 조건이 발생하는 경우) 입력이 종료됩니다. 원하는 경우 입력을 빈 줄로 종료해야 할 수도 있습니다 (입력의 일부로 계산되지 않아야 함). 그렇게 할 경우, 다른 사람들이 테스트를위한 올바른 입력을 제공 할 수 있도록 답변에 언급하십시오.
마지막 입력 줄을 포함 하여 모든 입력 줄 은 개행 문자로 끝납니다. 답은이 줄 바꿈을 일치하는 열로보고해서는 안됩니다. (솔루션이 마지막 줄이 줄 바꿈으로 끝나지 않는 입력을 처리 할 수 있으면 좋지만 필수는 아닙니다.)