ピースのエッジ(輪郭)を抽出し、そのピクセルの色相を求めます。それらを表として保持します。2.マッチングまず、最適なピースの位置では、ピースのエッジとその隣のピクセルの色相の差が最も小さくなるはずであるという仮定をします。根拠としては、写真のような画像は1ピクセル隣の色相がいきなり反転するような並びを含みにくいからです。いうことで、エッジの色相の差を計算します。次の図を参照してください。マス目を各ピクセルに見立てています。エッジより左が背景部分、右がピース部分だと思ってください。正方形内の数字は色相の値、点線内の数字は右と左の差の値です。これらの差の値をすべて足し、合計を求めます。その合計が小さいほど、「その位置がピースの位置にふさわしい」ということになります。実際の画像ではこのようになります。わかりやすいように黒でエッジを描いてあります。内側に青、外側にオレンジで色をつけたものがこちらです。拡大し、ピクセルをそれぞれの色で囲みました。よって、最適な位置を見つけるためには、少しづつ位置をずらしならがら色相の差を求め、その値が最小となる位置を記録すればよいことになります。よいということになります。回ほどこのマッチング処理を行えばいいようです。アルゴリズムの解説は以上です。色相を求める式などについては説明しませんでしたが、簡単ですし、調べればいくらでもわかるかと思います。実装に用いた技術についての解説は本質ではないため、していません。まとめ自動でパズルを解く仕組みを理解していただけましたでしょうか。2時間程度で書いたコードですのでひどい実装ではあるのですが、アルゴリズムとしてはそこそこの精度が出ます(デモでお試しください)。1回間違えると即スパム判定でボツ、という仕様でもない限りは順調にチェックをすり抜けることができるかと思います。脆弱であるか、どうしたら堅牢にできるのかを考えるための礎となれば幸いです。セキュリティShare:AuthorKOBA789都内の高校に通う高校生Noder。BASICの本を手に取ったことからプログラミングの世界に導かれた。自宅にサーバを置いたことをきっかけにWebにハマり,Twitterの力でnodejs_jpに巡りあった。最近はHaskellにも夢中。ゲヒルンでは仮想化基盤の開発や、分散システムの構築を担当。開始してからちょうど半年です。こと技術開発部技術局の吉田昂平です。新規セットアップする手順について記述しています。移設する手順について、記述しています。WordPress.。