Riichi.Scoring.Yaku (riichi v0.2.0)

Copy Markdown View Source

Internal Yaku detection algorithm.

You probably want to use Riichi.Scoring instead, which which calls this module, performs extra checks and scores the hand.

Summary

Types

yaku()

@type yaku() ::
  :dora
  | :aka_dora
  | :ura_dora
  | :menzenchin_tsumohou
  | :riichi
  | :double_riichi
  | :ippatsu
  | :chankan
  | :rinshan_kaihou
  | :haitei_raoyue
  | :houtei_raoyui
  | :pinfu
  | :tanyaochuu
  | :iipeikou
  | :jikazehai_e
  | :jikazehai_s
  | :jikazehai_w
  | :jikazehai_n
  | :bakazehai_e
  | :bakazehai_s
  | :bakazehai_w
  | :bakazehai_n
  | :sangenpai_haku
  | :sangenpai_hatsu
  | :sangenpai_chun
  | :chiitoitsu
  | :honchantaiyaochuu
  | :ikkitsuukan
  | :sanshoku_doujun
  | :sanshoku_doukou
  | :sankantsu
  | :toitoihou
  | :sannankou
  | :shousangen
  | :honroutou
  | :ryanpeikou
  | :junchantaiyaochuu
  | :honniisou
  | :chinniisou
  | :tenhou
  | :chiihou
  | :renhou
  | :daisangen
  | :suuankou
  | :suuankou_tanki
  | :tsuuiisou
  | :ryuuiisou
  | :chinroutou
  | :chuuren_poutou
  | :junsei_chuuren_poutou
  | :kokushi
  | :kokushi_13
  | :daisuushi
  | :shousuushi
  | :suukantsu

yaku_value()

@type yaku_value() :: {yaku(), non_neg_integer()}

yaku_values()

@type yaku_values() :: %{required(yaku()) => non_neg_integer()}

Functions

detect(input)

event_has_winning_tile?(event, tiles)

local?(yaku)

@spec local?(yaku()) :: boolean()

sum(yaku_values)

@spec sum(yaku_values()) :: non_neg_integer()

yakuman?(yaku)

@spec yakuman?(yaku()) :: boolean()