プライバシーポリシーの確認をお願いします。2020/08/14改訂 こちらです

本サイト内に存在するコンテンツは独自の試験や調査により作成されています。

モバイルブラウザにおいて表示に時間がかかります。ご了承ください

それは槓子?順子?刻子?

牌が配列に入ってて、それはなんの面子かを調べたい時があります。
副露した時にこれはxxxだ!と値を持たせてもいいんですが。

先日ビット処理で行う方法を書いたので、これを元に調べる方法を作りました。

proc isShuntsu(m:seq[Marjanhai]):bool =
    if len(m)!=3: return false
    var v = (m[0] or m[1] or m[2]) and NO_ALL
    return bitCount(v)==3
    
proc isKantsu(m:seq[Marjanhai]):bool =
    if len(m)==4: return true
    let a = (m[0] or m[1] or m[2]or m[3]) and NO_ALL
    let b = m[0] and NO_ALL
    if a==b: return true
    return false

proc isKoutsu(m:seq[Marjanhai]):bool =
    if len(m)!=3: return false
    let a = (m[0] or m[1] or m[2]) and NO_ALL
    let b = m[0] and NO_ALL
    if a==b: return true
    return false

順子は以前紹介した通り、一発で出来ています。
槓子と刻子はビットを立てても値が変わらなければOKというふうにしています。

ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。