어떤 사람들은 표와 들여 쓰기를 위해 공백을 사용해야한다고 주장합니다.
도표를 위해, 그것은 틀림없이 틀렸다. 정의에 따라 테이블을 사용하여 테이블을 사용해야합니다.
들여 쓰기의 경우에도 타블로 터는 객관적으로 우수합니다.
Stack Exchange 커뮤니티 에는 명확한 합의 가 있습니다.
들여 쓰기를 위해 단일 공간을 사용하는 것은 시각적으로 불쾌합니다. 둘 이상을 사용하는 것은 낭비입니다.
모든
골프선수들이 알고 있듯이 프로그램은 가능한 짧아야합니다. 하드 디스크 공간을 절약 할뿐 아니라 적은 바이트를 처리해야하는 경우 컴파일 시간도 줄어 듭니다.탭 너비 1 을 조정하면 각 컴퓨터에서 동일한 파일이 다르게 보이므로 모든 사람이 실제 파일을 수정하지 않고도 좋아하는 들여 쓰기 너비를 사용할 수 있습니다.
모든 훌륭한 텍스트 편집기는 기본적으로 tabulator를 사용합니다 (및 정의).
나는 그렇게 말하고 나는 항상 옳다!
슬프게도 모든 사람이 이성을 듣는 것은 아닙니다. 누군가 잘못된 TM 파일을 보냈으므로 수정해야합니다. 수동으로 할 수도 있지만 다른 것들도 있습니다.
스페이서가 귀중한 시간을 낭비하고 있기 때문에 문제가 해결 될 수있는 가장 짧은 프로그램을 작성하기로 결정했습니다.
태스크
다음을 수행하는 프로그램이나 함수를 작성하십시오.
STDIN에서 또는 명령 행 또는 함수 인수로 단일 문자열을 읽으십시오.
공백이 표 또는 들여 쓰기에 사용 된 모든 위치를 식별하십시오.
줄의 시작 부분 에 공백이 있으면 들여 쓰기가 됩니다.
의 실행 두 개 이상의 공간은 표 가 들여 쓰기되지 않습니다.
하나의 들여 쓰기없는 공간이나 표에 사용되지 않았을 수 있습니다. 다른 목적으로 같은 캐릭터를 사용할 때 예상 할 수 있듯이 쉽게 알 수있는 방법은 없습니다. 따라서 공간이 혼란 에 사용되었다고 말할 것입니다 .
파일 모양을 변경하지 않고 테이블 또는 들여 쓰기에 사용 된 모든 공간을 테이블로 대체 할 수 있는 가장 긴 탭 너비 1 을 결정 하십시오.
입력에 표 또는 들여 쓰기가 포함되어 있지 않으면 탭 너비를 결정할 수 없습니다. 이 경우 다음 단계를 건너 뜁니다.
이전에 결정된 탭 너비를 사용하여 테이블 또는 들여 쓰기에 사용 된 모든 공간을 테이블로 대체하십시오.
또한 파일 모양을 변경하지 않고 가능할 때마다 혼동에 사용 된 모든 공간을 테이블로 대체하십시오. (의문이 있으면 공백을 제거하십시오.)
함수에서 수정 된 문자열을 반환하거나 STDOUT에 인쇄하십시오.
예
모든 공간
a bc def ghij
표입니다.
각 공백은 공백이 아닌 문자의 앞 문자열을 너비 5로 채 웁니다. 따라서 올바른 탭 너비는 5이고 올바른 출력 2 는
a--->bc-->def->ghij
처음 두 공간
ab cde f ghi jk lm
표, 다른 사람들은 혼란입니다.
올바른 탭 너비는 4이므로 올바른 출력 2 는
ab->cde>f ghi>jk lm
마지막 공간은 테이블 로 대체되면 두 공간 으로 렌더링되므로 그대로 유지 됩니다.
ab->cde>f ghi>jk->lm
한 칸만 빼고
int main( ) { puts("TABS!"); }
들여 쓰기, 다른 하나는 혼란입니다.
들여 쓰기 레벨은 0, 4 및 8 공백이므로 올바른 탭 너비는 4이고 올바른 출력 2 는
int --->main( ) --->{ --->--->puts("TABS!"); --->}
공간에서이
( )
태뷸로 대체하는 경우는 그대로 남아 있으므로, 세 구역으로 렌더링 될 것이다.처음 두 공간
x yz w
들여 쓰기, 다른 혼란입니다.
올바른 탭 너비는 2이고 올바른 출력 2 는
->x>yz w
마지막 공간은 테이블로 대체되면 두 공간으로 렌더링되므로 그대로 유지됩니다.
처음 두 공간
xy zw
들여 쓰기, 다른 세는 표입니다.
탭 너비가 1이면 모든 공백을 제거 할 수 있으므로 올바른 출력 2 는
>>xy>>>zw
모든 공간
a b c d
혼란입니다.
가능한 가장 긴 탭 너비가 없으므로 올바른 출력 2 는
a b c d
추가 규칙
입력은 전적으로 인쇄 가능한 ASCII 문자와 줄 바꿈으로 구성됩니다.
한 줄에 최대 100 줄의 텍스트가 있고 최대 100자가 있다고 가정 할 수 있습니다.
출력을 위해 STDOUT을 선택하면 단일 후행 줄 바꿈을 인쇄 할 수 있습니다.
표준 코드 골프 규칙이 적용됩니다.
1 탭 너비는 고정 폭 글꼴을 사용하여 두 개의 연속 탭 정지 사이의 문자 간격으로 정의됩니다 .
2 ASCII 아트 화살표는 스택 교환이 제대로 렌더링하기를 거부하는 표를 나타냅니다. 버그 보고서를 제출했습니다. 실제 출력에는 실제 테이블 레이터가 포함되어야합니다.
programs should be as short as possible
아서 휘트니의 잃어버린 오빠를 찾았다 고 생각합니다 !!