できるだけ多くの異なるプラットフォームで異なる動作を生成するプログラムを作成します。異なるプラットフォームごとに1ポイントが付与されます(最初のプラットフォームを含め、1 *未満のスコアを獲得することはできません)。ターゲット/実行プラットフォームを決定するためのメカニズム(たとえば、.NETのEnvironment.OSVersion.PlatformなどのプラットフォームコンパイルステートメントまたはAPIを介して)は使用しないでください。最も高いスコアの答えが勝ちます(賛成票がタイブレーカーである場合)。
たとえば、Blub言語の次のプログラムについて考えてみますprint (1+2)
。このプログラムが3
コンパイルされて実行されるすべてのプラットフォームで印刷する場合、そのスコアは1になります。ただし、何らかの理由で4
PDP-11sで印刷する場合、そのスコアは2になります。たとえば、Cスニペットは無効なエントリです#ifdef WIN32 ... #endif
。
定義/詳細:
異なるプラットフォーム: a)ハードウェアアーキテクチャb)OSとそのメジャーバージョン番号の組み合わせ(例1.0.0と1.1.0は同じOSと見なされます)
動作が異なる: 2つの動作は同じですIFF彼らは同様の副作用(例えば、同じ内容で同じファイルを作成する)を生成、または副作用が同じ種類のエラーである場合。たとえば、プログラムが2つの異なるプラットフォームでsegfaultを実行しても、segfaultメッセージがこれらのプラットフォームで異なる場合、これは同じ動作と見なされます。一方、あるプラットフォームでゼロ除算エラーを生成するプログラムと別のプラットフォームでスタックオーバーフロー(そこで何をしたかを参照してください;)エラーが生成されると、異なる動作が生成されます。
未定義の動作はすべて同等と見なされます。
プログラムは、すべてのプラットフォームで同等の方法で呼び出す必要があります(ただし、必要に応じてコマンドラインパラメータを渡すことができます)
*さて、プログラムがゼロのプラットフォームで実行された場合、スコアはゼロになると思います。しかし、ええと...ええ、気にしません。
1
、Windowsと2
OSXで印刷するプログラムを作成し、WindowsでPythonスクリプトとして実行し、OSXでCプログラムとして実行する詳細を指定するとどうなりますか?