2012-01-01から1年間の記事一覧

麻雀関係リンク

順不同。 オープン麻雀プロジェクト(仮称) URL: http://en.sourceforge.jp/projects/openmahjong/ URL2: http://maragra.blog57.fc2.com/ URL3: @kackytw マッタリプログラミング日誌 URL: http://kmo2.cocolog-nifty.com/ URL2: @kmo2 まうじゃん的空間 URL…

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

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

つらぽよ

最近卒論しかやってなくてやばい。。。 卒論以外で、今やりたい(やってる)こと一覧 mjai用GUIクライアント2号 結構出来てるけどだいぶ放置してモチベ下がってる mjai天鳳プロキシ なんだかんだ手を付けなそう ブラウザで動く検討用碁盤(まともなの無いのか…

HORSビジュアライザ

自分用リンク。 HORS(Higher-Order Recursion Schemes)の展開をやってくれるのを作った。 まあ便利http://www3257ui.sakura.ne.jp/hors-vis/ https://github.com/wistery-k/hors-vis

碁盤

また自分用リンク http://www3257ui.sakura.ne.jp/goban/

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…

Ubuntuで Xmodmap あるいは キーバインド変更 の設定が効かない件

とりあえず自動ログインを切る。以上*1 *1:多分何かのタイミングの関係でバグってる。端末を立ち上げてxmodmap ~/Xmodmapとかすればちゃんと効くし。でもそれはさすがに面倒

C++用jsonライブラリbakkjson書いた

C++

多分バグバグ(?)だけど、行数がだいぶ少ないので、いじりやすいと思う。 あと、整数が使えるのがpicojsonと違う。 というのは、 #include <iostream> #include "bakkjson.h" using namespace std; int main() { json::value v = json::value::object({{"a", 5}}); cout </iostream>…

麻雀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)一択と思われ…

OCamlのパッケージマネージャOPAMを試してみた

この記事は完全に古くなっています。他をあたってください。 OCamlのライブラリインストールは毎回本当に苦行なので期待が高まる。 基本、 https://github.com/OCamlPro/opam ここにあるとおりにやればいい。 が、微妙に書いてない事とかあったのでメモ。 イ…

BOMを付与/削除する方法

BOMを追加する uconv -f utf-8 -t utf-8 --add-signature foo.cpp > foo_bom.cppBOMを削除する uconv -f utf-8 -t utf-8 --remove-signature bar.cpp > bar_nobom.cpp http://unicus.jp/skmk/archives/498

クラス名、別名と元の名前両方で使いたい

すごくアレっぽいけど、 import hoge.moja.Huga import hoge.moja.{Huga => H} で出来た。

sbtでシンボリックリンクするときは注意

なんとなくプロジェクトディレクトリのルートでln -s src/main/scala/jp/wistery/Hoge.scala してたらエラーが出てハマった。 さすがにsrc以下だけコンパイル対象にしてると思ったらそんなことはなくて、 別々のソースコードと思われて、2重にコンパイルさ…

牌画API

似たようなものは多分いっぱいあるんですが。 heroku入門がてら。こんな感じのHTMLを書くと <img src="http://haigacat.herokuapp.com/1333m23345p67s111z"> こうなる。 とても簡単だった。heroku公式のquickstartが十分わかりやすいし最新なのでお勧めです。なんか表示が遅い。どう考えてもキャッシュすべき。 ソースコー…

doubleメモ

C++

テスト環境 $ uname -a Linux ubuntu 2.6.32-41-generic #94-Ubuntu SMP Fri Jul 6 18:00:34 UTC 2012 x86_64 GNU/Linux $ g++ --version g++ (GCC) 4.6.1 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for co…

とりあえず型を合わせるHaskell入門

初心者による初心者のためのHaskell。 *1 そこそこ需要がある内容ではある気がしてる。 このエントリを読むのに最低限な知識 ghciを起動。 Prelude> :t 'c' 'c' :: Char 式の型をを調べるには、 :t 式 と入力します。 Prelude> :t 1 1 :: Num a => a 型制約…

Flashはクソ

ActionScriptのシンタックス的なクソもいっぱいあるけど、それはスルーして...ス レ ッ ド が な いイベント駆動といういかにもマルチスレッドっぽい機能が標準で有るけど完全に罠だった。具体的に困った場面... ボードゲーム作ってたんですが、 interace AI…

まーたクラスパス死した(´;ω;`)

爆発しろ!

オンラインジャッジの作り方/実装

オンラインジャッジを作ってみた、作ってみてる、作ってみようかなという人は結構多いのに、調べても何も出てこない不思議。 全体的な仕様 色々と、違いうる点がある。 今回はできるだけ必要最低限とおもわれる機能を追加していくことにする。 また、実装の…

ocsigen / eliom を試す

動かすだけでかなり苦しんだのでメモ。 (追記: 今ならOPAMで入れるのがいいと思います) sudo aptitude install libev-devwget http://ocsigen.org/download/ocsigen-bundle-2.1a.tar.gz tar zxvf ocsigen-bundle-2.1a.tar.gz cd ocsigen-bundle-2.1a ./confi…

ubuntuのフォント設定

シェルで $ sudo aptitude remove ttf-unfonts-core デスクトップ左上 System -> Preferences -> Appearance Fontタブ TakaoPGothicに変更。等幅はInconsolata Chrome 右上のスパナ->Preferences->Under the hood->Web ContentのCustomsize Fonts... TakaoPG…

最低限必要なシステムコール

x86_64の場合。 int main(){ return 0; } これだけのプログラムでも、 0,1,2,3,5,9,10,11,12,21,158,231は必要みたい。open, close, read, write,stat, mmap, exit_groupとか。 とりあえず、dynamic linked libraryを読み込むのに必要みたいだ。

Javaの不満点

とっさに出なかったりするのでメモ(思い出すたびに追記していく用) 分かってないなーと思われると思いますが、こっそり諭してくれると嬉しいです。 関数が第一級じゃない わざわざインターフェースとか馬鹿らしいです... mapとかfilterとか面倒。ループ回…

LablTkで窓を出すだけ

自分はよく実行してみるほうなので、プログラムを迅速に終了できるといいなということで、Ctrl+wで終了できるようにしてみた。 LablGTKと比べて、APIの設計が直感的・OCaml的で良い(個人の感想です) ソースコード let () = let top = Tk.openTk () in begin …

150C Smart Cheater

解法 まず、各区間についてネコババした時の期待値を求める(O(n))。 (監査に引っかかってもネコババ分は手に入るのに注意。)次に、各人どの区間ネコババするかを考える。 愚直にやるとO(m*n*n)だが、セグメントツリーを使うことでO(2*n + m*logn)になる。…

HaXeがやばい件

プログラミング言語HaXeがやばい。 (http://haxe.org/) haXe (hex と読みます) は オープンソース のプログラミング言語です。他の大部分の言語はそれぞれのプラットフォームに結びついている (Java なら JVM,C# なら .Net,ActionScript なら Flash Player…

javaでtar.gz書庫を展開する

ant.jarに依存しています。引数がjava7のnioになっていますが、適当に対処してください。 package; import java.util.zip.GZIPInputStream; import java.nio.file.*; import java.io.*; import org.apache.tools.tar.*; public class Main { public static v…