Riichi Mahjong Scoring Library and Calculator
CLI tool that calculates the score of a hand in riichi mahjong.
- Manual mode (Calculator Mode): given han and fu, calculates the score
- Normal mode: given a hand, calculates the score with included yaku and fu
- Analyse mode: Given tiles, will find valid tile shapes
This also doubles as a scoring library! check out the docs on crates.io

Examples
Library Usage
use ;
// creating a tilegroup from a string
let one_two_three_seq: TileGroup = "123s".to_string.try_into.unwrap;
let seven_eight_nine_seq: TileGroup = "789m".to_string.try_into.unwrap;
// creating a tilegroup from tiles
let seven_tile: Tile = "7m".to_string.try_into.unwrap;
let seven_pair: TileGroup =
new.unwrap;
// creating tiles in a few ways
let win_tile: Tile = "7m".to_string.try_into.unwrap;
let seat_wind: Tile = new.unwrap;
let prevelent_wind: Tile = Wind;
let hand = new
.unwrap;
assert!;
// get list of yaku, fu
let score = get_hand_score
.unwrap;
assert_eq!;
assert_eq!;
// get payment information
let payment = calculate.unwrap;
assert_eq!;
assert_eq!;
Calculator Mode
> Dealer: )
)
Normal Mode
note: the winning group has to go last (this is to calculate fu correctly)
> rrrd |
)
)
Analyse Mode
This is a pretty new feature and needs some work
> Handshapes
>
Using file input
# hands.txt
--tiles 1p 9p 1s 9s 1m 9m rd gd wd Ew Sw Nw WWw -w Ww -p Ew -s Ew
--tiles 11z NNw SSw WWw rrd wwd ggd -w gd -p Ew -s Ew -d Ew Ew
-m 4 30 --ba 3
|
)
)
|
)
)
)
)
Json out
in normal mode
yields
and in calculator mode
yields
Notation
Suits
| Type | Notation |
|---|---|
| Man (Characters) | 1m, 2m, 3m, 4m, 5m, 6m, 7m, 8m, 9m |
| Pin (Circles) | 1p, 2p, 3p, 4p, 5p, 6p, 7p, 8p, 9p |
| Sou (Bamboos) | 1s, 2s, 3s, 4s, 5s, 6s, 7s, 8s, 9s |
Honors
| Type | Notation | MPSZ Notation |
|---|---|---|
| Winds | Ew, Sw, Ww, Nw | 1z, 2z, 3z, 4z |
| Dragons | wd, gd, rd | 5z, 6z, 7z |
Special Notation
| Description | Example |
|---|---|
| Open Sets | 234po (an open sequence of 2, 3, 4 in Pin suit) |
| akadora | 0m, 0p, 0s |
- eg: EEEw - triplet of east wind
- eg: 234m - sequence of 2 3 4 Man
- eg: 406s - sequence of 4 5 6 Sou with the akadora 5 sou
- eg: 7777zo - open quad of red dragon
- eg: 11s - pair of 1 sou
- eg: 8m - 8 man tile
Installation
using cargo
If you want to use mahc as a scoring library
cargo add mahc
If you want to use mahc as a cli program use
cargo install mahc
mahc --help
build from source
git clone https://github.com/DrCheeseFace/mahc
cd mahc
cargo build
./target/debug/mahc --version
from latest release
curl -s https://api.github.com/repos/DrCheeseFace/rusty-riichi-mahjong-calculator/releases/latest | grep "browser_download_url" | cut -d '"' -f 4 | wget -i -
unzip mahc-vX.X.X-x86_64-unknown-linux-gnu.zip -d mahc
cd mahc/x86_64-unknown-linux-gnu/release
./mahc --version
Contributing
-
---- @gondoly @GuoDCZ
-
If you spot a bug, put in an issue with how to reproduce it
-
If you'd like to contribute, DO IT (send a PR)
-
If you think this library could do with some interface changes, make a suggestion
