Flexboxとを組み合わせるときはsize="1"が必要
<div style="display: flex;"> <div style="flex: 1 1 auto;">hoge:</div> <input type="text" style="flex: 1 1 auto;"> </div>
とした場合のこのinput要素、画面サイズが大きいぶんにはちゃんと伸びてくれるのですが、画面サイズが小さい場合にある程度以上小さくなってくれません。
<div style="display: flex;"> <div style="flex: 1 1 auto;">hoge:</div> <input type="text" size="1" style="flex: 1 1 auto;"> </div>
と size="1" をつければ良いようです。sizeを省略した場合はデフォルトのsizeが適用されるわけですが、その幅以下には縮んでくれないようです。ちなみにsize="0"は不正な値なようで、駄目でした。動作確認はChrome。
[programming][mahjong] シャンテン数計算アルゴリズムで各言語をベンチマーク
ymatsuxさんのシャンテン数計算アルゴリズムをいろんな言語に移植して速度を比較してみました。
結果(所要時間):
- C++ (GCC 4.4.3): 2.07秒
- Java 1.6.0: 3.53秒
- C# (Mono 2.10.8): 3.57秒
- JavaScript (Node.js 0.10.18): 4.78秒
- Scala 2.9.1: 14.51秒
- Ruby 1.9.3: 250.65秒
タスクは天鳳牌譜中のランダムな手牌1000個のシャンテン数計算です。同一マシンのtimeコマンドで計測した3回の平均。
感想:
- V8かなり頑張ってる。C++の約2.4倍程度。
- Scala意外と遅い。JavaScriptに負けてる。
- Rubyめっちゃ遅い。こういうのを書く言語じゃないんでしょうけど。
注:
- Scalaの数字が前回と変わってるのは、Hayatoさんの勧めに従ってforをwhileに書き換えたのと-optimizeオプションを付けたことで合計2倍程度高速化したためです。
- もちろんこういうのはタスク依存でコードの書き方依存なので色々と一概には言えない。
- アルゴリズム自体は色々と改良の余地があると思っている。とりあえず3倍程度に高速化するアルゴリズムは実装済み。
- Java版以外は七対子を考慮してません。どの実装も国士無双を考慮していません。計測時はJava版に手を入れて七対子の計算を無効化してます。
というわけでJavaScriptが意外と速いので麻雀AI JavaScriptで書こうかなー。
牌は1m, 2m, ..., 9m, 1p, 2p, ..., 9p, 1s, 2s, ..., 9s, 東, 南, 西, 北, 白, 發, 中の順の0-originの通し番号で表現されています。
2013/9/21追記: yuizumiさんにC#版をもらったので追加。
[mahjong][tenhou] 天鳳牌譜の統計による麻雀危険牌分析
ネット麻雀の天鳳で公開されている、天鳳位の人の牌譜17670ゲームを集計して、牌の危険度を分析しました。詳細はこちら:
得られた主な知見:
- 大雑把な危険度:
- 字牌 = 中スジ = ノーチャンス < 表スジ << ワンチャンス < 片スジ << 無スジ
- 中スジ(2p, 8pに対する5pなど)は表スジ(4pに対する1pなど)より安全。
- 生牌の字牌はスジの通った数牌よりやや危険、片スジよりは安全。
- 序盤の捨て牌の外側はスジと同程度に安全。
- 暗刻スジはやや危険度が上がる。
- 裏スジは危険度に影響しない。序盤の裏スジに限っても特に危険ではない。
- ただし序盤に5を捨てている場合の1, 9は危険度が上がる。
- 間四間も危険度に影響しない。
- またぎスジは基本的に危険度が下がる。リーチ牌のまたぎスジであってもノーヒントよりはやや安全。
- ここのブログの放置ぶりがひどい。
[mahjong] 麻雀AIと麻雀AI対戦サーバを公開
最近麻雀AIを作っています。現状のAI同士を対戦させるとこんな感じです(たぶんChromeでしか見れません)。一応それっぽく動いています。まだまだナイーブで、あまり強くないですが。まだ役やドラの価値を考慮してないので、赤ドラをガンガン切ってますね…。
このAIのために対戦サーバを作りました。TCPでこんな感じのJSONを送り合って対戦できます。もし使いたい人がいたらご自由にどうぞ。詳細はこちら:
ソースはこちら:
- gimite/mjai - Github : 対戦サーバ
- gimite/mjai-manue - Github : AI
[ruby][googledrive] Google DriveにアクセスするRubyライブラリを作りました
作りました、というか、google-spreadsheet-rubyにスプレッドシート以外のファイルをアップロード/ダウンロードする機能を加えて改名しました。
Google Drive Appを作るライブラリではありません。Google Driveにアクセスする2種類のライブラリの違いについてはこちら。
インストール:
$ sudo gem install google_drive
使用例:
require "rubygems" require "google_drive" # Logs in. # You can also use OAuth. See document of # GoogleDrive.login_with_oauth for details. session = GoogleDrive.login("username@gmail.com", "mypassword") # Gets list of remote files. for file in session.files p file.title end # Uploads a local file. session.upload_from_file("/path/to/hello.txt", "hello.txt", :convert => false) # Downloads to a local file. file = session.file_by_title("hello.txt") file.download_to_file("/path/to/hello.txt") # Updates content of the remote file. file.update_from_file("/path/to/hello.txt")
require "google_drive" GoogleSpreadsheet = GoogleDrive
するだけのライブラリになる予定です。
[android] Androidアプリ「かんたん検索」公開
テスト
一般公開と聞いて作ってみました。こっちに移ってくるかどうかは未定。
- 無駄に色々スタイルを使ってみるテスト。
ブログパーツ系は現状無理っぽい?と思ったら出てきた。iframeも使えるのか。プレビューだと出ないんですね…。あと見たまま編集モードで挿入する方法はなさそう?
というかJavaScriptが自由に動くっぽいですね。
あと+1ボタンがあるのを発見。
iframe:
google gadget: