ということで
前回の続きです。

 こちらを参考にJavaScriptでやってみます。
それにしても激しく超久しぶりに見たC++のコードだったりします。
JavaScriptに比べると記述が長ったらしい感じになってしまい、
あまり直感的でないのがなんだかなぁと思ってしまいます。
型宣言しなくて済む方が楽だし、JSはコードの可読性も良さげに思える。
C++でも auto とか使えば少しマシになるっぽいけどね。
C++11、C++14、C++17と地道に進化しているようですが、
複雑さも増していることは否めません。
覚えることが多すぎるきらいもある感じ。
コンパイル後の速度とかが優れているので、
システム記述言語としては王道なのかもしれませんが、
個人的にはもう触りたくない言語の一つですね(^_^;)
もし今、コンパイルな言語を使う必要が出た場合は、
進化したC言語とも言えそうなGo言語を採用するのが
個人的には良さげに思えます。
あるいはRustも良さげ。こっちは学習するのに時間を要しそうだけど。

 それはともかくとして、
こちらでやろうとしていることは、
要するにあらかじめ求めたテーブルを参照して高速化する、
ということのようです。
ただ、全ての組み合わせについてやると膨大になってしまうので、
自分には理屈はよく分からないけど、
数学的理論に基づいてテーブルを小さくした
ということのようです。

 ということで、
JavaScriptでやってみました。
検証にはこちらの「向聴数問題集」を使いました。
全部で4万件もの問題がデータ化されています。

 さて、
その結果ですが、
見事に全問正解!
しかも4万件の検証に要した時間がなんと0.5秒!ほどでした(^_^;)
7年前に買った古いノートPCでこの結果ですので、
最近のPCでやったらもっと早くなりそうです。
さすがテーブル参照は早いですね!
素晴らしい!!

 
 気を良くして、
さらにこちらを参考にちょっとしたツールを作ってみました。
任意の手牌を入力すると、
その向聴数と有効牌を表示するという感じになっています。
4面子1雀頭な形にならない七対子と国士無双は例外で別扱いとなります。
なお、牌の画像はこちらを使わせていただきました。

 向聴数と有効牌を確認するツールを試してみるには、
こちらからどうぞ。

 ちなみに、
↓こんな感じになります。

コメントする

メールアドレスが公開されることはありません。が付いている欄は必須項目です。