あなたの上司は最近、英語と呼ばれるこの興味深いプログラミング言語を知っています。彼はこの「革命的な」アイデアを持っていて、あなたと一緒にコーディングして、コードの生産率を倍にしたいと考えています!彼は技術に精通していないため、彼もあなたがコーディングできるようにコンパイラを書いて欲しいと思っています!
さて、あなたは邪悪な怠programmerなプログラマーであり、明らかにこのばかげて複雑な言語をコンパイルするプログラムを書くことはないでしょう。代わりに、上司のコードに常にエラーがあることを確認します。そうすれば、上司は実際のコンパイルに到達せず、コーディングの代わりに文法エラーを修正することができなくなります。
課題は、ターミナルから実行できるプログラムを作成し、ファイルパスを引数として受け入れることです。プログラムは以下を行う必要があります。
- タイプミスを導入してファイル入力を変更します。
- 導入したタイプミスに遭遇したため、コンパイルに失敗するふりをする。
- 同じファイルのコピーでプログラムを実行しても、同じタイプミスが連続して2回発生することはありません。
課題を説明するために、このファイルでプログラムを実行します。
Take an array as input.
Sort the array.
Output the array.
の行に沿って何かを出力する必要があります
Error on line 1:
'Take an arqay as input.'
^
arqay is not a valid identifier.
そして、プログラムにコンパイルするように指示したファイルは次のようになります。
Take an arqay as input.
Sort the array.
Output the array.
プログラムの仕様に関する詳細を次に示します。
プログラムでは、上司が入力したプログラム内の任意の文字を別のランダムな文字に交換すると、文法エラーが発生すると想定できます。あなたのプログラムは、ボスコードにエラーを作成するためにアルファベット以外の文字を使用しないでください。あなたの上司は決して数字や記号を使用せず、彼は何かが進行中であることを知ります。あなたのプログラムは、上司のプログラムの言葉にエラーを導入するだけです。文のスペースや句読点を変更しないでください。あなたのプログラムは、上司がコンパイルしようとするプログラムの大文字と小文字を変えてはなりませんarQay。つまり、エラーは無効です。これによりtake、Take、またはのArray代わりにarrayます。プログラムは、まずエラーの行を示すことによりエラーを出力する必要があります。
Error on line <insert line number here>:
次に、内部エラーを含む行を印刷する必要があります 'シンボル。次の行では、エラーの^ある単語の下にシンボルを配置する必要があり、最後にエラーを説明するテキストが必要です(この部分はユーザー次第です。エラーを説明している限り、何でも好きなことを言うことができます)。
入力ファイルが存在し、空ではないと想定できます。入力ファイルを追加する前に、入力ファイルに文法的なエラーがないと仮定することもできます。
ボーナス:
コードで発生するエラーが完全にランダムではなく、このように誤字ベースの場合は-60バイト質問の。
ランダムに交互に、少なくとも5つの異なるエラーメッセージに対して-60バイト。
プログラムに100分の1以下の確率で上司にやる気を起こさせるメッセージを出力する場合は-60バイト。
編集:メッセージのバイト数はスコアにカウントされません。 (この素晴らしいアイデアを提供してくれたMartinBüttnerに感謝します)
これはコードゴルフであり、最短バイト数が勝ちます。エラーメッセージの内容をゴルファーにしないでください。上司がエラーメッセージを理解できない場合、上司は満足しないでしょう。