昨日読んでそこそこ面白かったので貼っておく。

あなたのスキルで飯は食えるか? 史上最大のコーディングスキル判定 (1/2) - ITmedia エンタープライズ

確かに、この問題が解けたからといって優秀なプログラマだとは限らないだろうけど、解けない人はほぼ優秀でないだろうというのは僕でもわかる。重要なのは、アルゴリズムを考えられるということと、実際にそのアルゴリズムを書くために手を動かせる、ということだと思う。僕には特に2点目が足りない。

解くアルゴリズムとしては2個思いついた。解きたい人はこの下を見ずにリンク先にどうぞ。





解法1:
3つ連続(同じもの、又は隣合わせ)又は2つ同じものとなる牌を選び、残りの牌列に対して再帰をかける。成立しなかったときは再帰の1個前まで戻る。また、2つ同じもの、という組み合わせは1つしかない(ただし1つはある)という制約を設けて、最後の2つから何を待つかを推定する。

解法2:
最後の牌を全て探索して、それで役が成立するかを判定する。その中で、成立するとなったものに対してのみどういう組み合わせで待っていたかを解く。


そこまで真面目に考えてないからわからないけど、計算のオーダーは2の方が少ないと思う。


今日は暖かくて眠い。春っぽい。