麻雀

Haskell挫折

mjai用のAIをHaskellで書いていたが、挫折(でもないけど)したので、やっぱりrubyで行くことにした。 jsonをパースするコードとか結構面倒なので、Haskellで書きたい人がいた場合のために、一応ツモ切りAIを晒しておきます。 未テストのシャンテン計算も置…

テンパイ予測

麻雀の局面を受け取って、指定の相手がテンパイしているかを予測し、テンパイ/ノーテンを返せ。100000局面くらいでの正答率を競う。詳しい仕様は未定。 実装もまだ0。 想定解法は機械学習。 すごく適当なモデル化として、3~7を切ってる数、フーロ数とかでい…

一人麻雀

高橋くんは最強最速の麻雀AIを作るため、手始めに一人麻雀での和了速度を最強最速にすることにしました。しかし高橋くんは最近社長業に忙しいため、プログラミングの腕が立つと評判のあなたに頼んできました。*1関数を2つ実装し、以下の目的の通り最適化せよ…

mjaiをプロコンっぽい入出力でやれるpythonスクリプト

標準入力から取って、標準出力に出すだけでよくなりました。 python2.7で動作確認。*1 こんな感じで起動します。 python mjai-stdio.py mjsonp://localhost:11600/default ./a.outa.outのソースコードは、こんな感じで書ける。 #include <iostream> #include <sstream> using na</sstream></iostream>…

やるべき?こと1

MjaiのGUIクライアント2号 現在作成中。コア部分は最低限できてるけど、まだ色々やるべきことがある 特に難しいところはない(ただしUIは難しい)、はず ロビーサーバ mjaiはポート番号と部屋名で1ゲーム立てられる。(すでに4人接続していると、room is busy…

シャンテン数アルゴリズムの高速化について

「シャンテン数や点数計算をする時間」 ここはどうしても高速化することになるし、重要なところ(個人的には、まだ時期尚早というか、他にやるべきことがあると考えているが)。最強のシャンテン数計算アルゴリズムなんてよくわからないので、今回考えるのは…

思ってること1

mjai-silicaはルールベースのAIだが、将来的に強い(天鳳八段レベルくらい)の麻雀AIを作る時は、ある程度探索に帰着することが必要だと思う。 打牌するとき、各打牌での平均順位(または、近似的にその局の平均収支)を求めるとき、シミュレーションというか…

麻雀AIを書くときに気をつけること

あくまで自分の経験上のアレなので、参考程度... 最初から全部やらない 役判定とか、ものすごく退屈な割に得られるものが少ないので、最初から全部やろうとしてはいけない。 タンヤオとリーチと役牌、シャンテン数くらいで結構まともなのは作れる。 手牌が12…

mjai用GUIクライアント(しょぼい)

デバッグとか俺TUEEEEする用。.NET 4があれば動く。多分加カンができなかったり暗カンできなかったりすることに今気づいた(けど無視! 他にもバグがある。確実にソースコード。 https://github.com/wistery-k/MjaiFormsC#はdynamic型があるので、jsonライブ…

麻雀AIの実装方針について

適当なAIなら*1、600行とかで書けるので、ベタで書いてもそんなに問題にならないが、まじめにやりだすと大変。 ところで、そこそこ見ればバグってないことが分かりそうな実装方針を思いついたのでメモしておく。 コードはScalaっぽい何かで書きます。 AIのイ…

mjaiのC++ひな形(ツモ切りAI)

とりあえず動いてる。main.cpp #include <iostream> #include <vector> #include <algorithm> #include <initializer_list> #include "lib/socket.h" #include "lib/bakkjson.hpp" using namespace std; typedef json::value::object object; void run(string host, int port, string room) { cerr << "conne</initializer_list></algorithm></vector></iostream>…

麻雀の役一覧

enum yaku { TENHO, CHIHO, KOKUSHIMUSO, DAISANGEN, SUANKO, TSUISO, RYUISO, CHINROTO, DAISUSHI, SHOSUSHI, SUKANTSU, CHURENPOTON, DORA, URADORA, AKADORA, REACH, IPPATSU, MENZENCHIN_TSUMOHO, TANYAOCHU, PINFU, IPEKO, BAKAZE, JIKAZE, RINSHANKAIH…

麻雀AIの作り方(mjaiの使い方)

備忘録も兼ねてます。多少の間違いがあるかも。 対戦サーバの選択 こちら(http://togetter.com/li/230676)も参照。ただし若干古い。 現在は、mjai(http://gimite.net/pukiwiki/index.php?Mjai%20%CB%E3%BF%FDAI%C2%D0%C0%EF%A5%B5%A1%BC%A5%D0)一択と思われ…