今こそ、悪いコードを書く能力を誇示するときです。私は、手に負えないCコンテストに最も類似した新しい種類のプログラミングパズルを試しています。主な違いは、これはそれほど悪意のあるものではないということです:それはいくつかの良いきれいな楽しみです。パズルの目標は、できるだけ多くのバグをプログラムに詰めることです。このコンテストの勝者は、キャラクターごとのバグが最も多いプログラムを書いた人です。
明確化を求める膨大なコメントのスレッドを避けるために、今、バグを限定するものと考えるものを定義する必要があります。
まず、バグはエラーではありません。インタープリターがエラーとして検出できる問題(たとえば、不一致の区切り文字、不適切な形式の構文、nullオブジェクトのプロパティへのアクセスなど)、またはプログラムの実行または続行を妨げる場合は、そうではありません。バグ。それ以外の場合、4文字を入力すると、インタープリターは8つの構文エラーをリストし、バグ文字比率2を要求できます。
第二に、バグは明らかに間違っていてはならず、バグはイースターエッグではありません。これは確かに主観的な基準ですが、この種のコンテストには不可欠だと思います。これは、明確な方法でコードを具体的にマングルする条件付きコードを使用できないことを意味します。(読んでください:誰も違いを知らないので、チューリングピット言語を使用してください)。
第三に、バグはもっともらしいものでなければなりません。これは上記のように主観的ですが、バグは、あまり注意を払っていないか、おそらく無知な人、または間違えた人によって書かれたように見えなければなりません。これには、たとえば、オフバイワンのエラーや、有効で正しく見えるが望ましくない動作を引き起こす構文(括弧の代わりに角括弧を使用するなど)が含まれます。
バグは、プログラムに何らかの望ましくない動作を引き起こす可能性があります。これには、例外的な場合の望ましくない出力、一見無関係に見える何かに基づいて異なる動作が含まれますが、これに限定されません奇数または偶数の秒数)、メモリリーク、データの損失など。
問題の例:
すべてのASCII文字を数値の昇順で表示するプログラムを作成します。
回答例:
Brainf ***、5文字、1バグ、0.2バグ文字比
+[+.]
バグ:1のASCII文字を表示しません.+[.+]
。に変更することで修正できます。
さて、あなたは今ではほとんど手に入れているはずだと思う、ここにあなたのパズルがあります:
シーザー暗号をデコードし、単語をアルファベット順に並べ替える
シーザー暗号は、一連の文字を取得し、アルファベットのn文字分だけシフトして作成されます。アルファベットの最初または最後までずっと進む場合、AはZの後にあり、ZはAの前にあります。次に例を示します。
Mannequin
Nboofrvjo //Shifted over 1 or -25
Wkxxoaesx //Shifted over 10 -16
Ftggxjnbg //Shifted over -7 or 19
2つの入力が与えられます(入力は取得できますが、合理的には最も便利です)。最初の入力は単語で、2番目の入力はそれがシフトされる値です。タスクは、デコードされた単語を出力し、アルファベット順にソートされた後にデコードされた単語を出力することです。
例(悪い男の子に不快感を与えない、単なる例です):
最初の入力:gtdx wjbfwiji。ljy Gfi hfssty
2番目の入力:5
最初の出力:男の子に報酬が与えられます。悪いことはできません
2番目の出力:悪い男の子は報酬を得ることができません。
幸運を!