麻雀聴牌判定プログラムは、一色限定版である。
だが、一色でできてしまえば、あとは牌が同一あるいは連続であるかを判定するときに色も見ればよい。
簡単そうだが、色をどうやってもたせるべきだろうか?
そもそも私は最初は色つきでやろうとしていたのだが、
調べていくうちに一色限定で判定するというコンテストのようなものを見つけ、
それをまずやってみた。
私が最初にやろうとしたのは、
マンズ: m1, m2 ... m9
ピンズ: p1, p2 ... p9
ソーズ: s1, s2 ... s9
字牌:x1, x2 ... x7
として、比較する時は牌データの1文字目で色を、2文字目で数字を見る、
というものであった。
substr関数を使うとか、正規表現を使うとかすればよいだろう。
クラスを使うのはどうだろうか?
$pai->color で色を、$pai->number で数字にアクセスできれば、
判定がわかりやすく簡単に書けそうだ。
でもこのくらいであれば、上記のフォーマットにして「同じか」「連続しているか」
などをサブルーチンにするだけでよいかもしれない。