台麻の天和確率を題材として、数式処理システム maxima の麻雀のための使い方のごく一部を解説する。
公式ページのダウンロード説明 を読んで sourceforge のページへ。 自分の使用したい環境にあったものをダウンロード&インストールする。
起動すると、以下のようなプロンプトが表示される:
(%i1)
これは第1番目の入力 (input) であることを示すものである。
台麻の天和確率を求めたいので、母関数のページ からコピーした「清一色一般形」の3乗と「字牌一般形」との積を入力しよう。
プログラミングをかじっている人には常識であるが、ベキ乗は ^
, 積は *
の記号を使う。
(%i1) (1593385376*s^5*h + 235556632*s^5 + 440593684*s^4*h + 40399783*s^4 + 47037380*s^3*h + 2742868*s^3 + 1748756*s^2*h + 65272*s^2 + 19200*s^1*h + 484*s^1 + 54*s^0*h + 1*s^0)^3*(258048*s^5*h + 21504*s^5 + 161280*s^4*h + 8960*s^4 + 53760*s^3*h + 2240*s^3 + 10080*s^2*h + 336*s^2 + 1008*s*h + 28*s + 42*s^0*h + 1*s^0)
入力の終わりにはC言語のようにセミコロンを打ち、Enter (Return) で確定する。
(%i1) (1593385376*s^5*h + 235556632*s^5 + 440593684*s^4*h + 40399783*s^4 + 47037380*s^3*h + 2742868*s^3 + 1748756*s^2*h + 65272*s^2 + 19200*s^1*h + 484*s^1 + 54*s^0*h + 1*s^0)^3*(258048*s^5*h + 21504*s^5 + 161280*s^4*h + 8960*s^4 + 53760*s^3*h + 2240*s^3 + 10080*s^2*h + 336*s^2 + 1008*s*h + 28*s + 42*s^0*h + 1*s^0);
(%o1) [...]
第1回目に入力したものの処理結果が出力 (output) される (以下、[...]
は出力またはその一部で省略したものを示す)。
今回はただの文字式を入力したので、処理は事実上されていない。
入力したものより多少見やすく上付き表示がなされたり、累乗が expt
で表されていたりするだけだ。
直前の入力に対する出力を参照する変数として % を用いることができる。
式を展開する expand
を使って、これを展開してみよう。
(%i2) expand(%);
(%o2) [...]
12項の式を4つもかけたので、ずいぶん長い出力が得られただろう。
これではわけがわからないので、台麻の和了形にあたる s5h の係数を求めよう。
h の1次の係数は coeff
で求めることができる:
(%i3) coeff(%,h);
(%o3) [...]+1554490175889888s5+[...]
s5 の係数程度なら目で探すこともできるが、これも coeff
で求めた方がよいだろう:
(%i4) coeff(%,s,5);
(%o4) 1554490175889888
これが 台麻天和のページ にある計算結果の一部である。