이번 작업은 expand(1)
탭을 공백으로 확장 하는 POSIX 유틸리티 의 변형을 구현하는 것 입니다.
프로그램은 tabstop 사양을 취한 다음 표준 입력 을 읽고 입력의 탭 문자를 적절한 양의 공백으로 바꾸어 다음 tabstop에 도달합니다. 결과는 표준 출력 으로 작성 해야합니다 .
탭 스톱 사양
탭 위치 지정은 단일 번호 또는이 tab stop 쉼표로 구분하거나 구성된다. 단일 숫자의 경우 쉼표로 구분 된 목록에서 여러 번 발생한 것처럼 반복됩니다 (예 :로 4
작동 4,8,12,16,20,...
). 쉼표로 구분 된 목록의 각 항목은 선택적으로 접두사가 붙은 양의 정수 +
입니다. +
프리픽스는 콤마로 분리 목록의 이전 값에 대한 상대적인 차이를 나타낸다. 목록의 첫 번째 값은 절대적이어야합니다 (예 : 접두사 없음). tabstops는 공백이 아닌 다음 문자 (확장 된 탭 다음)의 열을 지정하며 가장 왼쪽 열은 숫자 0으로 설정됩니다. 탭은 항상 최소한 하나의 공백으로 확장되어야합니다.
입출력
tabstop 사양은 프로그램에 대한 첫 번째 명령 줄 매개 변수로 사용되거나 재량에 따라 표준에서 첫 번째 입력 행 (줄 바꿈으로 종료)으로 읽습니다. tabstop을 읽은 후 EOF가 처리되고 확장 될 때까지 나머지 입력 (이전의 경우 모든 입력). 확장 된 출력은 표준 출력으로 작성해야합니다.
확장 된 모든 탭 스탑 및 모든 입력은 최대 80 열로 가정합니다. 확장 된 모든 탭 스톱이 엄격하게 증가하고 있습니다.
예
탭 스톱 사양은와 4,6,+2,+8
동일 4,6,8,16
하며 입력이 모두
ab<Tab>c
<Tab><Tab>d<Tab>e<Tab>f
로 확장 됨 ( ␣
공백을 나타냄)
ab␣␣c
␣␣␣␣␣␣d␣e␣␣␣␣␣␣␣f
01234567890123456 (Ruler for the above, not part of the output)
1111111
스코어링은 순수한 코드 골프입니다 . 가장 짧은 코드가 승리합니다.
x+($1?i:0)
더 짧게 쓸 수$1?x+i:x
있습니까?