ラベル Julia Language の投稿を表示しています。 すべての投稿を表示
ラベル Julia Language の投稿を表示しています。 すべての投稿を表示

2015年11月25日水曜日

メカ女子将棋ソースコード再公開

メカ女子将棋を応援してくださってありがとうございます。

対コブラ戦は結構話題になったみたいですね(^^)

ソースコード公開しますー。githubにありまする〜。


まずはcloneするか、右下のzipのダウンロードでダウンロードして
いただき、bonanzaさんのfv.binをJuliaディレクトリと同列に入れてください(直下ってことですー)。

Juliaの0.4系最新を入れて頂いて、メカ女子将棋のJulia\run.batをご自分の環境に合わせてください。

run.batをcommand shellで実行したのちに、将棋所・将棋GUIでmechajyo.exeをエンジンとして登録してください。

対戦するときはまずrun.batを実行して、それから対戦を始めてください。

今回の修正は主に、0.4系への対応となります。

ではでは、Have Fun!!

(文責:kimrin)

2015年8月4日火曜日

Julia-tan exchange program is started! ( #JuliaLang )

"Julia-tan" is a (unofficial) #JuliaLang anime character.
If you want "Julia-tan" stickers (35mm x 50mm, color), please send me your real address and number of stickers by e-mail (I wish the subject contains "[Julia-tan]"). Then, I will send you "Julia-tan" stickers by envelope!
If you like the stickers, and if you could, please send me back other stickers or
greeting cards or "interest and non-expensive" things to me.
Max number of the stickers are five in same envelope (by default).

(for MIT person: I send 50 stickers to @acidflask. If you near the him, please consult to him.)

My e-mail address is concatenation of kittykimura, [at-mark], gmail, [period] and com.
The sha1 hex digest of the mail address is:
b93514e0a8637199ff61b830c3187eef466b03b9
(sorry, I calculate this digest by python's hashlib library...)


Julia-tan Exchange Program FAQ:

Q1. Does this program earn the profit?
A1. No. 100% volunteer activity!

Q2. I do not want to send my home/office address by e-mail. It is not secure.
Are there any options?
A2. Ask me my real address by e-mail. I send my real address by e-mail,
then please send me real mail to my real address. I return back Julia-tan
stickers by envelope.

Q3. I am Julia meet-up arranger. I would like to spread Julia-tan stickers for
participants of the meet-up. Do you send me batch of stickers?
A3. Please e-mail me the name of the meet-up, the number of stickers
that you needed and arranger real address.
If I think it is reasonable, I will send you batch of stickers by envelope.
There are only 300 stickers in my arms, so max number of the
batch is may be 30 (but there are exceptions of this rule).

Q4. I do not imagine what are "interest and non expensive" things.
Can you suggest them by examples?
A4. please send me one of followings:


  1.  stickers (not Julia-tan)
  2.  your city's guide or map (small ones)
  3.  post card
  4.  postal stamps
  5.  picture, photo
  6.  and any non expensive things that can put into the envelope
    except money itself, chemical substance ^^.

I do not want to stickers fee: I would like to receive mails around world
only as my hobby. so cheap ones are welcome!

Q5. I have another questions. How can I ask the question(s)?
A5. Please comment this blog entry.

Best Regards,

 Takeshi KIMURA (twitter: @kimrin)


2015年7月12日日曜日

JuliaTokyo #4 いってきましたー(^^) ( #JuliaTokyo )

久しぶりの更新になりまする。きむりん(40)ニートです(40歳以上は本当はただの無職でニートと言わないらしいですがw)。

 今日はJulia言語(ハッシュタグ #Julialang)のミートアップ、#JuliaTokyo に行ってきました〜。

 今回はJuliaConの後のミートアップということで、JuliaCon関係の発表があったのが目玉ですね。 あと、さんがハンズオンということで、DataFrameのおさらいと、SVM.jl の使い方のレクチャーを発表前にしてくれました。勉強になりましたー(^^) 

発表は会場紹介、自己紹介のあと、 さんのJuliaConについての話から始まりました。 soramiさんの卓越した情報収集能力により(^^) テキストにはなっていない あんな話、こんな話が聞けましたー。 あとsoramiさんはJuliaCon(MITで6月に開催されましたー)で日本のコミュニティについて 発表をされたそうで、その資料も上がっていますので、参考にしてくだしあ。

次の発表はさんによる、JSoC(Julia Summer of Camp)の発表がありました。かなり短期間でMoore財団の関連団体が母体となっているファウンデーションにサマーキャンプとして日本人では唯一Acceptされた話となっています。
BioJulia関連のタスクを担当されるそうです。

その他Julia言語で最初に何をみたらよいのか(さん)や
binaryデータをzerosで確保してread!すると速いよ的お話(さん)からの系列データについてのお話がありましたー。

LTで実は僕もしゃべっちゃいました。いつものメカジョさん(メカ女子将棋)の電王戦
(去年)スライドを軽くおさらいしましたー(^^)

今年は懇親会のあと二次会がありました。
さんが色々すごく詳しくてさすがと思いましたー(^^)


おそらく#5もそのうちw開かられる運びとなるかと思いますので、
みなさんその折にはお越しくださいませー。

soramiさんはじめ運営の方、ご尽力ありがとうございました。

わーい、いつもの仲間に会えたーという1日でした(^^)



2014年9月2日火曜日

#JuliaLang Anime Character Project Established!

Hi there,

I decided to establish a #JuliaLang Anime Character (Japanese "kawaii" taste cartoon design).

fig 1: Sample picture: Mecha Lady Shogi's mascot character.
May be same designer will be designing #JuliaLang
new anime character! This girl wear the sailor costume
(ordinal high school girl's uniform in Japan).
Background yellow piece is Shogi (Japanese Chess) piece(Knight).

So I'd like to hear the voices around globe that which design specification
(costume, etc.) is appropriate for new #JuliaLang anime character.

Please feel free to post comments below (may be anyone can post the comments).

Best Regards,

 Takeshi KIMURA


2014年7月6日日曜日

#JuliaTokyo いってきましたー


メカ女子将棋Julia tokyo#1 from Takeshi Kimura

#JuliaTokyo #1で発表してきました。タイトルは「メカ女子将棋」!!

@sorami さん始め企画運営の方、有り難うございましたー。

僕の発表自体はどちらかというとビット演算中心の、ややJulia言語
本来の使われ方からは離れた使用例の解説がほとんどで、いささか
皆さん「わからん!」って感じだったので、すいません、こんど
発表するときはもうちょっとlightな内容にしますです。

最後に実際に将棋を指していることろを皆さんに見て頂けたので、
これはこれで有意義だったかな、と思っておりまする。

やはり終わってみて、懇親会含め、よい集いだったなぁと。

データ分析や可視化、様々な最適化などで使われている例が多いので、
僕もそういう勉強していこうかな、と思う一日でした。

そして、#JuliaLang というまだ日本語のcomprehensiveな解説の
無いマイナー言語について、これだけのエキスパート達がもう既に
日本にいるとは、と驚きました。

「なぜRやPythonじゃなくてJuliaを使うんですか」ってよく言われると
思います。もちろんスピードの面で有利だったり、洗練された型システムを
挙げること、できると思います。ただ、ライブラリの面では発展途上感
否めないと思います。それなのに、何故、と問われればやはり、

 この言語に未来を感じるから

なんじゃないかな、と思いました。
#JuliaLang 日本でも流行るといいな♡

ありがとうございましたー

(文責kimrin)


2014年1月29日水曜日

世界コンピュータ将棋選手権、参加費を納めていざ出陣!

先日郵便局にいってきまして、例の

第24回世界コンピュータ将棋選手権


の申し込みをして参りましたー。

メカジョさん(メカ女子将棋、@mechajyo)、ことしもGWに華麗に参戦の
予定です。皆様宜しくお願い致します。


ことしはかずさアークということで、まだ未知なる領域に興味津々なのですが、
今年も水面下で色々な動きが少しづつ始まっている模様ですね。

今年はNextGenMechajyoという新しいメカジョさんプログラム(Julia言語)を
投入できたらな〜と思っています。Stockfishさんを参考にして、chessプログラムを
まずは作って、そこから一気に将棋にもっていきたいな、と。


   Stockfish(chess,C++)  ->  
MechajyoChess(chess,Julia)  -> 
MechajyoShogi(Shogi,Julia)

考えていますが、そうはうまくいかないですよねー
(そうだそうだーw)

まぁあの、電王戦や去年の選手権に出したバージョンをちょこっと変えてだすだけかもしれず、いずれにしろ、生暖かいご支援を宜しくお願い致します。てへっ。

あ、あと英語でMechajyoさんの説明を書いた資料作ったら、Julialangな人達にRTや言及をされて、いい感じだったので英語ですが、恥ずかしいですが、リンク貼っときます。

http://www.slideshare.net/kimrinjp/mechajyo

以上現場からkimrinがお伝えしました。
ではねちゃお〜



2014年1月4日土曜日

メカ女子将棋ソースコードとインストール方法について(捕捉)

メカ女子将棋のソースコードをGitHubに公開したのですが、実際に将棋を指させるまでには幾つか準備が必要です。本日はドキュメント不足だったメカ女子将棋のリポジトリについて、さらには将棋が指せるようになるまでの準備について、ブログエントリに纏めさせて頂きます。

まず、アカウントkimrinのGitHubにJapaneseChessとWCSC23という二つのリポジトリがありますが、通常はWCSC23の方を使ってください。JapaneseChessの方はバグがあるのと、WCSC23よりも弱いこともあり、お勧めできません。。。

基本的にコンピュータ将棋エンジン(プログラム)を将棋所というソフトに登録して使うのですが、いまのところLinuxとMac+Linuxの環境でしか動作実績がありません。
まずはLinuxで動かしてみることをお勧めします。Windowsでも是非動かしたいので、その辺今後対応していきたいと思います。まずは64bit Ubuntuでの動作について説明したいと思います。

Linuxでの将棋所の動作のために、まずmonoというフレームワークをインストールします。これはwindowsの.NETフレームワークに相当するもので、将棋所のLinuxでの動作をサポートするものです。Ubuntuならapt-getなどで入れてください。

さて、将棋所はインストール出来たでしょうか。mono Shogidokoro.exeとターミナルに入れて起動してみてください。

ここからが本番です。将棋所にメカ女子将棋をエンジン登録して使うのですが、登録方法が2種類あります。一つはエンジンの一部をコメントアウトして登録し、実際の対戦ではそのコメントアウトを再び復活させて動かす方法が一つです。

二番目の方法はsocketというコマンドを使う方法です。この方法はクラウドサーバーを使うために新たに開発しました。今日はこの二番目、socketプログラムを使うやり方をご説明します。

まずLinuxマシンにJuliaをインストールします。最新のUbuntuならapt-getできますが、Juliaのリポジトリの更新スピードはかつてないほど早いので、1ヶ月でもう過去のものになります。今後のために、JuliaはGitHubから落とした最新コードでビルドすることをお勧めします。

基本的にgit cloneしてソースコードを落としてきて、直下でmakeします。
configureはありません。なおビルドに際してgfortranなどが必要になります。makeが中断したら何が必要か確認してapt-get、再びmakeの繰り返しで進んでください。なお一部最新CPUではMakefileの修正が必要になる場合があります。あとAVXインストラクションを持たないアーキテクチャではワーニングが出るようになります。


makeして直下にjuliaファイルができたら、$ ./julia してみてください。プロンプトが出ればJuliaのインストールは完了です。早速WCSC23リポジトリをcloneして動かしてみましょう。

WCSC23/Juliaディレクトリで、$ ./Main.jl してみます。何も出なければ多分動いています。エラーが出る場合は何らかの修正が必要です。

なおBonanzaさんのfv.binをWCSC23ディレクトリ直下に置きます。

ここで、ERROR: type: typeassert: expected Array{(Any...,),2}, got Array{(Int64,Int64),2}
が出る場合、BitBoard.jl:39
を、次のように修正してください。
修正前(BitBoard.jl:39)
]::Array{(Any...,),2}
修正後(BitBoard.jl:39)
]::Array{(Int64,Int64),2}
おそらくJulia0.2以降でこのエラーのでる可能性があります。

./Main.jl して10秒以上待っても何も出なくなったら、
次を実行してみてください。

cat inputgame | ./Main.jl

ずらずらと文字が出て、bestmove 9g9fのような表示がでれば
エンジン自体は動作しています。

次にエンジンの登録方法です。

Juliaディレクトリに、4091.sh と 4091.regist.sh という二のシェルスクリプトがあると思います。4091.sh を4091.sh.hozonとしてコピーし(名前は何でもいいです)、4091.regist.shを4091.shにコピーして、将棋所に登録します。

登録できたら万々歳です。

次にsocketというプログラムをインストールします。apt-getでインストールしてください。

登録できたら、4091.sh.hozonを4091.shに上書きします。まだこの時点ではエンジンは動きません。

このsocket(1)プログラムは標準入出力をsocketにつなぐソフトです。サーバー、クライアント両方の動作をすることが可能で、まず登録エンジン側にクライアントを、それとは別にサーバーを立てて、サーバーにMain.jlを接続して登録エンジンの入出力をMain.jlの入出力につなぎます。

具体的にはWCSC23/Julia ディレクトリで下記コマンドを実行します。

 $ socket -sqv -p ./Main.jl 4091

すると4091ポートをlistenし始めます。ここではサーバークライアント接続のために4091ポートを使うことにします。

その上で先ほど登録したエンジンを動かしてみてください。おそらく将棋が指せるようになると思います。

サーバーの接続は1戦ごとに切れます。まずサーバーを再び起動してから、将棋所でゲームを起動してみてください。

Macにsocketをインストールすれば、Macでも将棋所を使って対戦できます。また4091.shのlocalhostのところを書き換えれば、将棋所を動かしているマシンとは別のマシンでエンジンを動作させることができます。これがクラウドサーバー対応となります。


色々不備のある状態でソースコードを公開してしまったこと、反省しております。
申し訳ありませんでした。

引き続きこのブログエントリで質問して頂ければ、可能な限り質問にお答えして行きたいと思います。

以上です。

















2013年11月9日土曜日

将棋電王トーナメント、メカ女子将棋応援ありがとうございました

皆様ご存知の通り、11/2の電王トーナメント予選にメカ女子将棋が参加いたしました。

結果は2勝(且つその二勝は相手の投了と相手の反則で得た勝利w)6敗
でした。

対戦の模様はニコ生でも放送され、「ファンシー」な棋風とか、
「メカジョの呪い」などのコメントが流れ、ニコ生を明後日の方向に
盛り上げましたw
Twitterでも様々なコメントを頂戴いたしました

色々な形で生暖かい声援をたくさん頂きました。
この場を借りてお礼申し上げます。ありがとうございます。


ファンシーな棋風なのですが、間違いなくalpha-beta法のバグと
評価関数のバグによるものです(他のチームの方から助言頂きました)

次回電王トーナメント、世界コンピュータ将棋選手権の目標は、
まずはバグを潰すところから、でしょうか。

重ねてありがとうございました。
今後もメカ女子将棋を宜しくお願い致します。

(文責kimrin)


2013年10月20日日曜日

メカ女子将棋のソースを公開しました!

オッすオラきむりん。オラにみんなの知恵を分けてくれ!

って訳ではないのですが、メカ女子将棋のソースコードを公開しましたー。
ライセンスは緩いMITライセンスとなっておりますー!

まぁあの、弱いソフトのソースなんて誰も見ないわ、とかその通りなのですが、
電王戦もありますし、ネット上にソースあると便利でしょ、みたいな感じですです。

もしかしたら間違えてJulia Language関係の人がpull requestしてくれるかもしれ
ないし、しないと思いますがはい、しないです(T_T)

https://github.com/kimrin/JapaneseChess

一応、プログラムのためのホームページもありますが、上記README.mdからの自動生成だったりしますです。

http://kimrin.github.io/JapaneseChess/

ではね、ちゃお☆

2013年6月23日日曜日

30分で分かる最先端プログラミング言語Julia

やっぴー、きむりんだよ☆
今日は新しい言語の紹介をします。Julia言語 http://julialang.org/と言う言語です。
LLVMを使ったJIT Compilersを装備していて、インタプリタ形式で実行することが
できます。

詳しい解説は先ほどのURLに譲ります。速度の面でもC++に迫るものがある、という
ことが書かれておりますー。今日はJulia言語のドキュメント(英文)をもとに、
Julia言語入門を書いてみたいと思います。

では、WindowsにJuliaをインストールして、あんなことやこんなことをしてみましょ
う。Juliaの30分スペシャルツアー、始まるよー☆

1. インストール
とりあえず、さっきのURLから、downloadsのページに飛びます。 http://julialang.org/downloads/
そこに、google codeのページが書かれていますので、さらに飛びます。えいっ。
https://code.google.com/p/julialang/downloads/list

幾つかWinという単語のついたzipがあると思いますが、次のファイルをお薦めします。

一つ目(2013/07/23時点):
julia-0.2pre-dbac83fb44-WINNT-i686.zip

もし一つ目がダメだったら:
julia0.1.2-WINNT-i686+Git.zip

Julia言語はデフォでGitを使ってファイルをダウンロードするので、
長期的にはGitの入っている配布物がいいでしょう。

zipを展開して、適当な場所にファイルを置きます。
julia.batというファイルがありますので、ダブルクリックしてください。
1回目は色々コンパイルするので時間がかかります。

プロンプトが出て、めでたしめでたしです。(多分)

使い方はpythonなどのように、REPLで使うか、
> julia.bat file1.jl file2.jl ...
のようにファイルを指定して使います。Julia言語ファイルは拡張子.jlです。

LinuxやMacでも配布物あります。ただLinuxは最新のUbuntu以外はgit使ってソースコードからビルドになると思います。詳しくはGitHubのReadme.mdを参考にしてください。
コンパイルにgfortranとか必要です。多分自分のマシンにLinux入れてる人なら自分で
ビルドできると思うのであまり心配してません(こら)


2. まずはこんにちは世界

              _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "help()" to list help topics
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.0.0+107211096.rba9e.dirty
 _/ |\__'_|_|_|\__'_|  |  Commit ba9eb0a653 (2013-01-14 19:30:42)*
|__/                   |

julia>

ちょっとロゴがつぶれちゃいましたが、こんな感じでjulia>ってロゴが出てくるので、
まずはREPLから色々やってみましょう。

julia> println("Hello Julia!")
Hello Julia!

末尾のセミコロンは要りません。付けてもいいですが、普通は付けないで
書きます。pythonやrubyみたいですね。

3. 数値

julia> 1
1

julia> 100000
100000

julia> 1000000000000000000000000000
syntax error: invalid numeric constant 1000000000000000000000000000

julia> 100000000000000000000
syntax error: invalid numeric constant 100000000000000000000

julia> int128("100000000000000000000000000000000")
100000000000000000000000000000000

あまりに長い数はエラーになります。
int128という関数で128bit整数を作れるのですが、そいつに文字列として
数字を喰わせてあげると、128bit整数となります。

julia> typeof(int128("100000000000000000000000000000000"))
Int128

julia> typeof(Int)
BitsKind

julia> Int
Int64

julia> Int32
Int32

julia> 

0xを付けて16進数にすると、unsignedな型になります。


julia> typeof(0x88)
Uint8

julia> typeof(0x8888)
Uint16

julia> typeof(0x88888888)
Uint32

julia> typeof(0x88888888777777776666666655555555)
syntax error: invalid numeric constant 0x88888888777777776666666655555555

julia> typeof(uint128("0x88888888777777776666666655555555"))
ArgumentError("'x' is not a valid digit (in \"0x88888888777777776666666655555555\")")
 in parse_int at string.jl:1132
 in uint128 at string.jl:1185

julia> typeof(uint128("88888888777777776666666655555555"))
Uint128

julia> 

長過ぎる数は例によって、コンストラクタ(ここではuint128)を
使って作ってください。

typeof関数で、数値や文字列などのデータがどのような型を持つか
が分かります。windows版は現在32bit版だけで、
IntがInt32となります。上記例は64bit Mac OSXでの実行例
なので、Int64となっております。ここ注意です。

4. 数値型

本来は最初に説明すべきでした。
次のような数値型があります。

• Integer types: 
  – Int8 — signed 8-bit integers ranging from -2^7 to 2^7 - 1.
  – Uint8 — unsigned 8-bit integers ranging from 0 to 2^8 - 1.
  – Int16 — signed 16-bit integers ranging from -2^15 to 2^15 - 1.
  – Uint16 — unsigned 16-bit integers ranging from 0 to 2^16 - 1.
  – Int32 — signed 32-bit integers ranging from -2^31 to 2^31 - 1.
  – Uint32 — unsigned 32-bit integers ranging from 0 to 2^32 - 1.
  – Int64 — signed 64-bit integers ranging from -2^63 to 2^63 - 1.
  – Uint64 — unsigned 64-bit integers ranging from 0 to 2^64 - 1.
  – Int128 - signed 128-bit integers ranging from -2^127 to 2^127 - 1.
  – Uint128 - unsigned 128-bit integers ranging from 0 to 2^128 - 1.
  – Bool — either true or false, which correspond numerically to 1 and 0.
  – Char — a 32-bit numeric type representing a Unicode character (see Strings for more details).
• Floating-point types:
  – Float32 — IEEE 754 32-bit floating-point numbers.
  – Float64 — IEEE 754 64-bit floating-point numbers.

128bitの型があるのが面白いですね。浮動点少数については、32bit, 64bitが
あります。デフォルトではFloat64という型になります。

型の名前に対応した、コンストラクタが存在します。そうです、さっき出て来た
uint128()などです。
型名を先頭文字だけ小文字にすれば、コンストラクタとなります。

5. BigInt, BigFloat

pythonの整数みたいに、多倍長整数/実数を扱えます。
あまり使うことはないと思いますが。。。

julia> BigInt(1000)
1000

見た目は変わりませんが、BigIntになっています。あたまが大文字なのに
注意してくださいね。

6. 数学関数群

一通りあります。詳しくはマニュアルどぞ。

julia> sin(0.4)
0.3894183423086505

7. その他新しい機能

分数と、複素数が扱えます。


julia> sqrt(1 + 2im)
1.272019649514069 + 0.7861513777574233im

虚数部はimで表現します。

julia> 12//34 * 56//78
56//221

a//bでb分のaになります。演算が可能です。
気になる型は、Rational{Int32}です。JavaのGenericみたいですね。


8.文字列

Unicodeを扱うため、文字列は少し面白い仕様です。

str = "Hello, Julia!¥n"

のように、C言語のような扱いが可能ですが、

str[0], str[1]とアクセスすると、たまにUnicodeの文字があると
例外が出ます。

どうすればいいかと云うと、

for c in s
    println(c)
end

のように、for...in文で廻すと、cにUnicode文字が入ります。

9. 正規表現

割愛(ぉぃ PCREが使えます。

10. 関数

関数定義はMatLabに近いです。

function f(x,y)
  x + y
end


Juliaではループや関数の最後はendキーワードで終わります。
基本インデントしますが、pythonのような字下げで意味が変わる仕組みは
ありません。

この関数では返す値をreturnキーワードを用いずに書いています。
LISPと同じで、最後に書いた式が返り値となります。

returnキーワードも使えます。制御構造により異なる返り値が返るとき、
途中で値を返したいときにreturnキーワードを使います。

function f(x,y)
  if  x > 0
    return x+y
  else
    return x*y
  end
end

11. 無名関数


julia> x -> x^2 + 2x - 1
 #<function>

所謂ラムダ式です。
別件バウアーですが、
2xって書くと、2*xを計算してくれます(λ式以外でも使用可能)




今日はこんなところかなぁ、、、
(力尽きた)