最も一般的な標準タスクの1つ(特に難解なプログラミング言語を紹介する場合)は、「catプログラム」を実装することです。STDINをすべて読み取り、STDOUTに出力します。これは、Unixシェルユーティリティにちなんで命名されていますcat
が、もちろん、ディスクから読み取られたいくつかのファイルを印刷(および連結)するために通常使用される本物よりもはるかに強力ではありません。
仕事
標準入力ストリームの内容を読み取り、それらを逐語的に標準出力ストリームに書き込む完全なプログラムを作成する必要があります。(ほとんどの言語で理解されているように)あなたの言語には、標準入力および/または出力ストリームをサポートしていない場合にのみ、あなたの代わりにあなたの言語での彼らの最も近い同等のものを意味するためにこれらの用語を取る可能性がある場合(例えばJavaScriptののprompt
とalert
)。これらはI / O の唯一の許容される形式です。他のインターフェイスはタスクの性質を大幅に変更し、回答の比較をはるかに少なくするためです。
出力には、正確に入力のみが含まれている必要があります。この規則の唯一の例外は、挨拶、ANSIカラーコード、インデントなど、抑制できない言語のインタープリターの一定の出力です。これは、末尾の改行にも適用されます。入力に末尾の改行が含まれていない場合、出力にも改行を含めるべきではありません!(唯一の例外は、実行後に言語が常に末尾の改行を出力する場合です。)
標準出力ストリームに期待される出力が含まれている限り、標準エラーストリームへの出力は無視されます。特に、これは、標準出力ストリームを汚染しない限り、ストリームの終わり(EOF)に達すると、プログラムがエラーで終了できることを意味します。これを行う場合は、エラーのないバージョンも回答に追加することをお勧めします(参照用)。
これは、言語間ではなく各言語内の課題として意図されているため、言語固有のルールがいくつかあります。
- 言語で標準入力ストリームのヌルバイトをEOFと区別できる場合、プログラムは他のバイトと同様にヌルバイトをサポートする必要があります(つまり、標準出力ストリームにも書き込む必要があります)。
- 言語で任意の無限入力ストリームをサポートできる場合(つまり、入力でEOFをヒットする前に出力へのバイト出力を開始できる場合)、この場合、プログラムは正しく動作する必要があります。例として、sの
yes | tr -d \\n | ./my_cat
無限ストリームを出力する必要がありますy
。標準出力ストリームを印刷およびフラッシュする頻度はユーザー次第ですが、ストリームに関係なく、有限時間後に発生することを保証する必要があります(これは、特に、次のような特定の文字を待つことができないことを意味します印刷前の改行)。
nullバイト、無限ストリーム、および無関係な出力に関する正確な動作についての回答にメモを追加してください。
追加のルール
これは、これに対する最短の解決策で言語を見つけることではありません(空のプログラムがトリックを行う場所があります)-これは、すべての言語で最短の解決策を見つけることです。したがって、回答は承認済みとしてマークされません。
ほとんどの言語での提出は、適切な既存のエンコーディングでバイト単位でスコアリングされます。通常は(必ずしもそうではありませんが)UTF-8です。
このチャレンジよりも新しい言語(または言語バージョン)を使用しても構いません。この課題に対する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
ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。
## Perl, 43 + 2 (-p flag) = 45 bytes
言語名をリンクにして、スニペットに表示することもできます。
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
sh
使用して答えcat
も使って短いソリューションが含まれていますdd
。)
cat