AlgodooとPaintを使用して、次の4つの便利な形状の6つの300×300モノクロ画像を作成しました。
このクラスの画像には、次のプロパティがあります。
- これらは常に300×300ピクセル、単色(白黒のみ)で、正方形、円、三角形、歯車に対応する正確に4つの白い領域があります。
- シェイプが互いに重なり合ったり、接触したりすることはありません。また、画像の境界に接触したり、境界から外れたりすることもありません。
- 形状のサイズは常に同じですが、任意の方法で回転および配置できます。
(シェイプの面積も等しくなりますが、このようにラスタ化すると、ピクセル数が正確に等しくなる可能性は低くなります。)
チャレンジ
そのような画像のファイル名を取り、すべての白いピクセルを回す可能な最短のプログラムまたは関数を書きます...
(255, 0, 0)
正方形にある場合は赤。(0, 0, 255)
サークル内にある場合は青。(0, 255, 0)
三角形の中にある場合は緑。(255, 255, 0)
ギアにいる場合は黄色。
例えば
詳細
プログラムは、考えられるすべての入力画像に対して効果的に機能するはずです。(有効な300×300のモノクロ画像のみが入力されます。)私が提供した6つの画像は単なる例であり、プログラムに出力をハードコードすることはできません。
組み込みまたは外部のコンピュータービジョンライブラリまたは関数を使用することはできません。ポイントは、独自のピクセルレベルの操作を使用してこれを行うことです。画像を簡単に開いて変更できる画像ライブラリを使用できます(例:PIL for Python)。
カラースキームに固執する限り、入力および出力に一般的なロスレス画像ファイル形式を使用できます。
画像ファイル名を関数の引数として、stdin、またはコマンドラインから取得できます。出力画像は、新しいファイル、同じファイルに保存するか、単に表示することができます。