가장 일반적인 표준 작업 중 하나 (특히 난해한 프로그래밍 언어를 보여줄 때)는 "고양이 프로그램" 을 구현하는 것입니다 . 모든 STDIN을 읽고 STDOUT에 인쇄하십시오. 이것은 유닉스 쉘 유틸리티의 이름을 따서 명명되었지만 cat
실제로 디스크에서 읽은 여러 파일을 인쇄 (및 연결)하는 데 사용되는 실제보다 훨씬 덜 강력합니다.
태스크
당신은 작성해야 전체 프로그램의 표준 입력 스트림의 내용을 읽고 표준 출력 스트림에 그대로 기록합니다. 귀하의 언어가 표준 입력 및 / 또는 출력 스트림을 지원하지 않는 경우 (대부분의 언어에서 이해되는 바와 같이), 대신이 용어를 귀하의 언어에서 가장 가까운 동등한 의미로 간주 할 수 있습니다 (예 : JavaScript prompt
및 및 alert
). 다른 인터페이스가 작업의 성격을 크게 바꾸고 답변을 훨씬 덜 비교할 수 있기 때문에 이것들은 유일하게 허용되는 I / O 형식입니다.
출력은 정확히 입력을 포함해야하며 다른 것은 포함 하지 않아야합니다 . 이 규칙의 유일한 예외는 인사말, ANSI 색상 코드 또는 들여 쓰기와 같이 억제 할 수없는 언어 해석기의 일정한 출력입니다. 이것은 후행 줄 바꿈에도 적용됩니다. 입력에 후행 줄 바꿈이 포함되어 있지 않으면 출력에 줄 바꿈이 포함되어서는 안됩니다! 언어가 실행 후 항상 줄 바꿈 문자를 항상 인쇄하는 경우는 예외입니다.
표준 출력 스트림에 예상 출력이 포함되어 있으면 표준 오류 스트림으로의 출력은 무시됩니다. 특히, 이는 표준 출력 스트림을 오염시키지 않는 스트림의 끝 (EOF)에 도달하면 오류로 프로그램이 종료 될 수 있음을 의미합니다. 이렇게하면 오류없는 버전을 답변에 추가하는 것이 좋습니다 (참조 용).
이는 언어 간이 아니라 각 언어 내에서 해결해야 할 과제이므로 몇 가지 언어 별 규칙이 있습니다.
- 언어에서 표준 입력 스트림의 널 바이트를 EOF와 구별하는 것이 가능한 경우 프로그램은 다른 바이트와 같이 널 바이트를 지원해야합니다 (즉, 표준 출력 스트림에도 기록되어야 함).
- 언어에서 임의의 무한 입력 스트림 을 지원하는 것이 가능하다면 (즉, 입력에서 EOF를 누르기 전에 출력에 바이트 인쇄를 시작할 수있는 경우),이 경우 프로그램이 올바르게 작동해야합니다. 예를 들어 s
yes | tr -d \\n | ./my_cat
의 무한 스트림을 인쇄해야합니다y
. 표준 출력 스트림을 인쇄하고 플러시하는 빈도는 사용자에게 달려 있지만 스트림에 관계없이 유한 한 시간 후에 발생해야합니다 (특히, 다음과 같은 특정 문자를 기다릴 수 없음을 의미 함) 인쇄 전 줄 바꿈).
널 바이트, 무한 스트림 및 외부 출력과 관련된 정확한 동작에 대한 답변을 메모에 추가하십시오.
추가 규칙
이것은 가장 짧은 해결책으로 언어를 찾는 것이 아닙니다 (빈 프로그램이 트릭을 수행하는 곳이 있습니다)-이것은 모든 언어 에서 가장 짧은 해결책을 찾는 것 입니다. 따라서 답변이 수락 된 것으로 표시되지 않습니다.
대부분의 언어에서 제출은 적절한 기존 인코딩 (보통 UTF-8은 아님)으로 바이트 로 채점됩니다 .
Folders 와 같은 일부 언어 는 점수를 받기가 약간 까다 롭습니다. 의심스러운 경우 Meta에 문의하십시오 .
이 도전보다 새로운 언어라도 언어 (또는 언어 버전)를 자유롭게 사용하십시오. 이 과제에 0 바이트 답변을 제출하기 위해 특별히 작성된 언어는 공정한 게임이지만 특별히 흥미롭지는 않습니다.
제출물을 테스트하려면 통역사가 있어야합니다. 이전에 구현되지 않은 언어에 대해이 통역사를 직접 작성할 수 있습니다.
또한 언어 는 프로그래밍 언어에 대한 일반적인 기준 을 충족해야합니다 .
선택한 언어가 이미 답변이있는 다른 (잠재적으로 더 널리 사용되는) 언어의 사소한 변형 인 경우 (BASIC 또는 SQL 방언, Unix 쉘 또는 Headsecks 또는 Unary와 같은 사소한 Brainfuck 파생물을 생각하십시오) 기존 답변에 메모를 추가하십시오 동일하거나 매우 유사한 솔루션은 다른 언어에서도 가장 짧습니다.
이전에 철회하지 않는 한 http://meta.codegolf.stackexchange.com/q/1061을 포함한 모든 표준 코드 골프 규칙이 적용됩니다 .
부수적으로, 골프가 많지 않은 언어에서는 지루한 (그러나 유효한) 답변을 공표하지 마십시오. 이들은 가능한 한 완전한 카탈로그를 컴파일하려고 시도하기 때문에이 질문에 여전히 유용합니다. 그러나 저자가 실제로 코드를 골프화하는 데 노력을 기울여야하는 언어로 답을 주로 투표하십시오.
목록
이 게시물의 맨 아래에있는 스택 스 니펫은 답변 a) 언어 당 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 카탈로그를 생성합니다.
답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.
## Language Name, N bytes
N
제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :
## Ruby, <s>104</s> <s>101</s> 96 bytes
헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .
## Perl, 43 + 2 (-p flag) = 45 bytes
언어 이름을 링크로 만들면 스 니펫에 표시됩니다.
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
sh
cat
dd
cat