この課題はこの古い課題と似ていますが、仕様のいくつかの不明確な部分が打ち出され、I / O要件が厳しくなっています。
印刷可能なASCIIと改行のみで構成される文字列の入力を指定すると、そのさまざまなメトリック(バイト、ワード、行カウント)を出力します。
出力する必要があるメトリックは次のとおりです。
バイト数。入力文字列はASCII内にとどまるため、これは文字数でもあります。
単語数。これは
wc
、「単語:」の非空白文字のシーケンスの定義です。たとえば、abc,def"ghi"
1つの「単語」です。行数。これは一目瞭然です。入力には常に末尾の改行が含まれます。つまり、行カウントは「改行カウント」と同義です。末尾の改行は1つしかありません。
出力は、デフォルトのwc
出力を正確に複製する必要があります(ファイル名を除く)。
llama@llama:~$ cat /dev/urandom | tr -cd 'A-Za-z \n' | head -90 > example.txt
llama@llama:~$ wc example.txt
90 165 5501 example.txt
行カウントが最初に来て、次にワードカウント、最後にバイトカウントになることに注意してください。さらに、各カウントはすべて同じ幅になるようにスペースで左詰めする必要があります。上記の例で5501
は、は4桁の「最長」番号であるため165
、1つのスペースと90
2 つのスペースが埋め込まれます。最後に、数字はすべて、各数字の間にスペースを入れて単一の文字列に結合する必要があります。
これはcode-golfであるため、バイト単位の最短コードが優先されます。
(ああ、ちなみに... wc
答えにコマンドを使用することはできません。それが明らかでない場合は。)
テストケース(\n
改行を表します。オプションで追加の末尾改行も必要になる場合があります):
"a b c d\n" -> "1 4 8"
"a b c d e f\n" -> " 1 6 12"
" a b c d e f \n" -> " 1 6 16"
"a\nb\nc\nd\n" -> "4 4 8"
"a\n\n\nb\nc\nd\n" -> " 6 4 10"
"abc123{}[]()...\n" -> " 1 1 16
"\n" -> "1 0 1"
" \n" -> "1 0 4"
"\n\n\n\n\n" -> "5 0 5"
"\n\n\na\nb\n" -> "5 2 7"