麻雀の和了形を求めるプログラムは書けたので、次は役を判定するプログラムを書いてみる。 入力は、 和了形を求めるプログラム - koba::blog で求めた和了形を用いる。 基本的には和了形にパターンマッチを試みて判定していくのだが、麻雀には複合役があるので、複合可能な役はすべて洗い出す必要があるし、複合できない役*1は排除しなければならない。 出力を役名と翻数の組の一覧とすると役満以外についてのプログラムは以下の通り。 function hupai(mianzi, zhuangfeng, zifeng) { var menqian = mianzi.filter(function(m){ return m.match(/[\-\+\=](?!_)/)}).length == 0; // 門前のとき true var zhuangfengpai = new RegExp('^z' + ((