COBOLは非常に古い言語であり、執筆時点では58歳です。実際、非常に古いため、非常に興味深い癖があります。各行の最初の6文字はコメントです。
これはなぜですか?まあ、これらの6文字は、プログラムが完全にデジタル化されておらず、コンピューターに入力されていなかった当時、行番号として使用されることを目的としていました。
さらに、7番目の文字は非常に小さなセットの一部にしかならない可能性があります(通常*
、行またはスペースをコメントアウトして、コードから行番号を分離します)
しかし、よりデジタルシステムを使用していて、生のプログラムだけが必要な場合はどうでしょうか。
コメントシステム
COBOLには2種類のコメントがあります。行コメントと前述の「行番号」コメントです。
行番号のコメントを外すのは簡単です。各行から最初の7文字(6プラス1スペース)を削除するだけです。
000000 apple
000001 banana
celery donuts
になるだろう:
apple
banana
donuts
行コメントはそれを少し難しくします。行コメントは*
、次のように、行の7番目の文字位置にアスタリスクを配置して開始されます。
000323* this is a comment
これは行コメントではありません:
*00000 this isn't a comment
行コメントのコメントを解除するには、行全体を削除します。
「プログラム」とコメントされた例:
000000 blah blah
000001* apples
000002 oranges?
000003* yeah, oranges.
000*04 love me some oranges
コメントなしのバージョン:
blah blah
oranges?
love me some oranges
つまり、文字列のコメントを解除するには、各行の最初の6文字を削除してから、スターで始まらないすべての行の最初の文字を除くすべてを返します。
挑戦
コメント化されたプログラムを受け取り、コメント化されていないバリアントを返すプログラムまたは関数を作成します。
明確化
- アスタリスク(
*
)は、行の最初の7文字以外の場所では検出されません(構文の確認を求めているわけではありません) - 各行には常に少なくとも7文字が含まれます。
- 7番目の文字は常にアスタリスクまたはスペースであると想定できます。
- 入力または出力は、マトリックスまたはリストです。
- 印刷可能なASCII文字(および改行)のみを処理する必要があります。
- 末尾に改行を付けて出力できます。また、必要に応じて、入力の末尾に改行があると想定することもできます。
得点
これはcode-golfなので、バイト数が最小の答えが勝ちです!
免責事項:私は実際にCOBOLを知らず、主張もしていません。この質問で私が行ったCOBOLに関する主張のいずれかに誤りがある場合、私は責任を負いません。
*
。の後にスペースがあります。これは偶然ですか?
key:{key:{key:length,key:length}}
です。ただし、すべての書式設定データと入力データを削除します。