15パズル プログラマー的言い訳

スワローズ関連のことじゃないですが…
先日、「つば九郎15パズル」を投稿しました。つば九郎描いたので、これ使ってなんかおもしろいもの作れないかなと思い、考えついたのが古典的なこれ。

CSSとJS(jQuery)でサクっと2時間くらいでコーディングして、デバッグもそこそこにリリース。
リリース後、デバッグも兼ねて何度か自分でやってみたのですが…

「どうしてもクリアできない!」

Twitterでも「意外に難しい」といったようなリプいただいたので、調べてみたらやはり不可能な配置がありました
確かに、1箇所だけ逆の場合、入れ替えることは不可能です。
気づかなかった…意外に奥が深かった。

本業の片手間でやっていて、それほど時間もかけられないのですが、なんか気持ち悪いのでロジックの変更を検討。

最初は、0〜14でランダムな配列をつくり、並べていました。

改善案①
「不可能な配置」の条件を探り、それを除外

10分くらい考えた。理系なのですが、数学科ではなく物理科なので、確信に至らず断念。

改善案②
完成形から変形させて配列をつくる

10分くらい考えた。確実に完成できるようになりますが、汎用的なロジック考えるまで頭がまわらず断念。(でも、これはもうちょっと頑張ればできそう。)

改善案③
完成できる配列を数パターン用意し、ランダムに選択

結局、一番簡単なコレを採用。そんなに何度もやるもんじゃないし、たまたま同じになっても気づかないだろうし、仕事ならもうちょっと頑張ったよ…(言い訳)

Webコーディングあるある
「綺麗なコードが書ければ本人は気持ちいいが、ユーザーにとってはどうでもいい。」
「他人のページのソースを見て、コードに感動したことがある。」
「IE8をサポートしなくて良くなって、心の底からうれしい。」

ということで、配置の初期化とか、ピースクリック後の分岐とか、力技でものすごく汚いコードになってしまったので、時間があったら改善しよう。
でも、同業者以外ソースなんで見ないだろうし、やってもユーザーは体感的に何も変わらないんだよなぁ。
ソースは絶対見ないでね。(振りじゃないよ。)

↓「共感できた」「たのしかった」方は よろしければ1日1ポチッとしていただけるとうれしいです。

コメントは、@puntaro_ys の対象ツイート または 固定ツイートの返信まで。フォローもお待ちしています。

東京ヤクルトスワローズ 応燕ブログです。「傘の花 咲かせ」じゃなくて「傘の華 咲かせ」だよ。どっちでもいいんだけどね。(Swallow Blog)