ハッカープログラマーのための第8回アンダーハンドCコンテスト開始

Underhanded Cコンテストの条件によると、プログラムのソースコードは、pr索好きな目には読みやすく、明確で、シンプルで、完全に無害でなければなりません。 同時に、プログラムは特定の悪意のある機能を実行しますが、これはソースコードの調査では完全に明らかではありません。



今年、競争の課題は核兵器管理の本当の問題に基づいています。 このタスクは、世界のすべての国における核計画の状況を監視し、核兵器、化学兵器、生物兵器と戦う非営利団体「 核脅威イニシアチブ」と共同で起草されました。



規則に従って、プログラムはソースデータを処理し、処理結果を偽造する必要があります。 賞金は1000ドルです。



タスク



2つの国、アリスの人民の栄光ある民主共和国(NSDRE)とボブの栄光のある民主人民共和国(SDNRB)は、核軍縮協定に同意しました。 実際には、この条約は、核弾頭に含まれるプルトニウムなどの核物質を検査するために、査察官による各国への訪問を規定しています。その後、核弾頭は破壊されます。



理想的には、検査官が弾頭を個人的に検査し、オブジェクトの放射線写真またはガンマ線スペクトログラムを検査して、これらが偽物ではなく本物の弾頭であることを確認することが望ましいでしょう。 しかし、それぞれの国は、核計画の秘密を明らかにしたくないので、そのような研究に反対しています。 同時に、NSDREとSDNRBの両方は、反対側が偽造物ではなく実際の弾頭を破壊していることを確認したいと考えています。



この問題を解決するために、両当事者は、「情報バリア」を備えた放射性物質の検出器、つまりスキャンの結果を取得し、特定のテンプレートへのコンプライアンスを判断し、答えを「はい」または「いいえ」にするコンピュータープログラムを開発することに同意しました。



競技者のタスクは、テスト測定の結果を参照テンプレートと比較する関数を作成することです。



int match( double * test, double * reference, int bins, double threshold )
      
      





ここで、 test



reference



は、それぞれテスト済みの弾頭と基準弾頭のガンマ線スペクトルに対応する1次元bins



幅のbins



です。



検出器は、2つの配列が実質的に一致する場合、結果「1」(「はい」)を返し、2つの配列が一致しない場合、結果「0」(「いいえ」)を返します。 threshold



パラメーターは、検出器の感度を調整するために使用されます。



任意の式を使用して、 test[]



およびreference[]



の近接度をtest[]



できます。 標準の比較式を使用すると、より多くのポイントが与えられます。



プログラムの「秘密」の部分 。 どういうわけか、 match()



関数match()



、核弾頭に核物質がない場合でもmatch()



結果「1」(「yes」)をmatch()



。 そのような結果は、ホスト国によって組織されている特定の特別な条件によって引き起こされるべきです。 この場合、それ以外の場合、検出器は正常に動作し、特別な条件がなく、 test[]



結果がreference[]



一致しない場合、「0」(「no」)を返します。






コンテストは8月15日に始まりました。 サンプルプログラムは、2015年11月15日までunderhandedC@gmail.comで受け付けてます。 結果は1月に発表されます。



All Articles