あなたの仕事はnl
、GNUコアユーティリティのコマンドラインツールに似たプログラムを実装することです。
標準的な抜け穴は禁止されています。
GNU sedのコマンドnl
や=
コマンドなど、ファイルまたは文字列の行に番号を付けるために、組み込みまたは外部の関数、プログラム、またはユーティリティを使用することはできません。
仕様
入力
プログラムは引数としてファイル名を受け入れます。コードはクロスプラットフォームである必要はありません。コードを実行しているOSのファイル名形式を使用する必要があります。つまり、Windowsを使用している場合、ディレクトリ区切り文字は\
または/
です。
-
指定されている場合を含め、64個の入力ファイルを取得できる必要があります。64を超える場合は、最初の64のみを処理します。
ファイル名のリストで、-
標準入力を表します。
ファイル名が指定されている場合は、指定された順序でファイルから読み取り、内容を連結し、各ファイルの間に新しい行を挿入します。1つまたは複数のファイル名から読み取ることができない場合(ファイルが存在しないか、読み取り権限がないため)、無視します。指定されたすべてのファイル名が無効な場合、何も出力しません。
ファイル名が指定されていない場合は、標準入力から読み取ります。ファイル名が指定されていない場合、または指定されている場合にのみ、標準入力から読み取ります-
。
出力
プログラムは、このように番号が付けられた行で入力を標準出力に出力します(入力に\n
、\r\n
または\r
行末があると仮定することができます;都合の良い方を選択しますが、どちらかを指定します)。
<5 spaces>1<tab><content of line 1 of input>
<5 spaces>2<tab><content of line 2 of input>
...
<4 spaces>10<tab><content of line 10 of input>
...
<3 spaces>100<tab><content of line 100 of input>
...
...
行番号には6文字のスペースが割り当てられ、これらの文字の最後に挿入されます。残りはスペースになります(たとえば1
、先頭に5つのスペースがあり、22
先頭に4つのスペースがあります...)。入力が十分に長い場合、最終的にlineの行番号のスペースが不足します999999
。999999行目以降は何も出力しないでください。
入力が空の場合、何も出力しません。
終了ステータス
低い番号が優先されます。エラー1および2が発生した場合、ステータス1で終了します。
入力が正常に受信され、行が正常に番号付けされて出力された場合、ステータス0で終了します。
コマンドラインで指定された1つ以上のファイルが見つからないか、読み取ることができなかった場合、ステータス1で終了します。
指定されたファイルが多すぎる(64を超える)場合は、ステータス2で終了します。
入力が長すぎる(999999行を超える)場合は、ステータス3で終了します。\
得点
これはコードゴルフです-最短のプログラムが勝ちます!
ある特定のオプションを実装するために、後でボーナスを追加する場合がnl
あります。現時点ではボーナスはありません。
prompt()
、プログラムの引数と標準入力をエミュレートしたりできますか?