2012年04月05日

ロックマンの数理

設問:ロックマン8ボスをランダムで倒すとき平均何体を弱点武器で倒せるか

回答:ある順番Aの解き方に対し、それの逆の順番A†というものを考えられる。

Aがn体を弱点武器で倒していたとすると、A†の順番では8-n体弱点武器で倒すことになる。

(ボスbの弱点武器を先に取っていたらbを弱点武器で倒せ、後に取ったら弱点武器で倒せないので。)

よって、n体を弱点武器で倒す解き方の個数は8-n体を弱点武器で倒す解き方の個数に等しい。n体を弱点武器で倒す確率をp(n)とするとp(n)=p(8-n)。確率分布が4で対称なので、期待値は4。

もう少し丁寧に言いうと
期待値E = Σk p(k) = Σ k p(8-k)=Σ (8-m) p(m) = 8-E
→2E=8 → E=4

確率分布を求めずに対称性だけで解けるのがすごい。(物理ではよくあることですね。)
posted by hougi at 01:17| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2012年04月04日

爆弾低気圧 GREEを強制退会されたこと

昨日は、爆弾低気圧のため、十二時頃の退社となりました。いい会社です。

帰る前に、中華料理屋で粥を食ったのですが、その後急激に体調がおかしくなりました。

症状:めまい。軽い吐き気。圧迫感。

最初はこれは粥のせいだと思ったのですが、ふと気づきました。

「この体調不良は低気圧のせいではないかと」

というわけで、低気圧と体調不良で調べてみると気象病というらしいです。まあ高山病みたいなものです。昨日の低気圧で体調悪くなった人は結構多くいたのではないでしょうか?

その後気圧と体調を監視し続けたのですが、気圧の低下がおさまる頃に治りました。気圧の時間微分に関係する?

それはそうと、GREEから強制退会されました。

GREEからのメール
「04月03日 16:06に投稿された内容は、不適切な表現が含まれているため削除されました。
以下の項目に該当する行為は、利用規約により禁止しております。

・本人、第三者の如何を問わず個人情報を掲載する行為
・個人を特定できる情報を掲載する行為

以前もGREEで禁止しております行為についてご連絡しておりますが、上記のとおり
改善のご意思がないと判断せざるを得ない為、お客様のご利用を強制停止いたしました。」

GREEのアカウントは取っただけtwitterのタイムラインを流すだけで放置していたのですが、以下の発言が引っかかったようです。

「帰れない人はギークハウス水道橋に来てください。09036168226 平田」

しかし、自分の個人情報を出せないSNSというのも不思議なものです。

調べてみると2006年3月にGREEに登録していました。GREEがまだ30万人しかいなかったころのアカウントだったので結構希少なアカウントでした。

今回消えたアカウントは古すぎて、携帯の認証とかもしていないので、すぐ簡単にまたアカウントを取れると思います。

ちょっと前にGREEにログインしたら一昔と全然様子が変わっていて驚いたのを覚えています。
GREEが面白いサービスを出したらまた入ろうと思います。

一昨日書いたロックマンの確率の問題、n回当たった事象と8-n回当たった事象の対称性を使えば結構簡単に求まりますね。それはまた後日。
posted by hougi at 10:42| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2012年04月03日

日記

さすがに昨日の今日では余り書くことがありません。

昨日は仕事が終わった後、出版社の友人がうちに来てくれました。
初めて会ったのが学生時代の吉田寮でその後、仕事する前に一回東京で会ってるので、今回が会うのが三回目でした。

とはいえ、facebookでよく見るので全然そんな気がしません。

最近、謎解き日本近現代史という本を読みました。

http://www.amazon.co.jp/gp/product/4061494147?ie=UTF8&tag=hougi-22&linkCode=shr&camp=1207&creative=8411&creativeASIN=4061494147

戦前の政治史について詳しくなかったので大変面白かったです。

明治憲法の不備(権力構造が非成文的で曖昧)が分かりました。

昨日のジャンプは読みにくかったですね。
めだかボックスが面白かったです。
posted by hougi at 11:11| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2012年04月02日

日記

やっぱり毎日何らかの形で日記書かないと、中間記憶層が衰えることを感じて日記ブログ再開。

メールで投稿できるように設定してこれからできたら毎日ブログを更新するようにしたい所存。
会社のブログとはてなブログ両方に同時投稿しています。

理想としては「朝起きて歯みがきをして...」ってブログを毎日書いていきたいです。

最近、ファミコンとスーパーファミコンをさせる怪しげなゲーム機体を買ってきたのでファミコンやっています。キーコンフィグがAB逆なのでややこしいです。
逆にされるとBダッシュしながらAでジャンプするの難しくなるんですね。
中指をBに人差し指をAにする持ち方で対処します。

ロックマン4をやっているだけど、ふと思ったこと。

「ランダムに8ボスを倒したとき、弱点武器が当たる期待値は?」

ちょっと考えたけど、思考がまとまらないし仕事中なので後にします。

以下週末日記:

土曜日、12時ぐらいまで寝て、その後、件のステログサイト直し。
その後はだらだらして、六時から、飲み会1。

飲み会1はアフリカに長く行っていた友達の友達が帰ってきたので歓迎会。写真部と熊野寮と吉田寮の人たちがきていたので、「こんなところで会うとは十年ぶり」って人が三割ぐらいでさらにはギークハウス創始者phaまで来てました。

二次会では「USB端子にバナナを突っ込んだんですけどどうしたらいいですか?」など技術的な質問を幾つか受けました。

その後、ギークハウス高円寺に移動。もう終わっている感じですが、ある住民のお別れ会に参加しました。その人はもう寝ていたけど。

そこで、朝まで寝て、日曜研究仲間のWeiと会い、その友達たちと、上野のボストン美術館展に行きました。二日酔いと寝不足で気分がすぐれなかったのでよく見ていません。
その後、アメ横に行ったあとドイツに帰るWeiを見送りました。

次に会えるのはいつになることやら。二年ベルリンにいるらしいので、今年か来年会いに行きたいです。

そのあと、秋葉原を回って、ロックマン2を探しました。見つかりませんでした。

帰って、SPECの特別版を見ました。SPEC通常版は見ていなかったのですが、trickと同じ人が作っていたのですね。trick好きなので、大変面白かったです。さかのぼって通常版も見たくなりました。

その後、ロックマン4をして寝ました。

起きたら十時半でした(始業は10時です)。

久しぶりにブログ書いたのですが、文体がゆるぐけどいくらでも書けますね。続けようと思います。
posted by hougi at 12:41| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2012年03月13日

ruby+twitter+MeCab+google geocodingでなんかやってみよう

趣味でtwitterのリストからタイムラインを取ってきて、形態素解析して、場所を表す単語を取ってきて、それの緯度経度を表示するものをrubyで作りました。

例えば @tomo3141592653の僕(平田朋義)が
「東京駅に着きました」と発言したら、それを拾ってきて次のように出力します。

「東京 駅:
{"lat"=>35.689506, "lng"=>139.691701}
平田朋義@tomo3141592653
東京駅に着きました。」

解説はソースコード内のコメントで。


# -*- encoding: utf-8 -*-

require "MeCab"
require "twitter"
require "open-uri"
require "uri"

list =Twitter.list_timeline("tomo3141592653", "Suidobashi",:per_page=>300)
#@tomo3141592653が作ったSuidobashiリスト(うちのシェアハウスの住民リスト)のタイムラインを300件取ってくる。

c = MeCab::Tagger.new()

list.each do |li|
txt = li.text #例:東京駅に着きました。
word = c.parseToNode(txt) #形態素解析する。

# 形態素ごとループ
while word do
type = word.feature.split(",") # 品詞


if type[1].toutf8 == "固有名詞" and type[2].toutf8 == "地域" # 地域を表す単語のみ取ってくる。

location = word.surface #例:東京
next_word = word.next.surface #例:駅

json = open("http://maps.googleapis.com/maps/api/geocode/json?address=#{URI.escape(location)}&sensor=false")

#google geocodingにアクセスし geocoding結果を取ってくる。
#例:"http://maps.googleapis.com/maps/api/geocode/json?address=東京&sensor=false"

json = YAML.load(json.read) #jsonのパース

sleep(0.1)

#国名なら無視。
if json ==nil || json["status"] != "OK" || json["results"][0]["types"].index("country")
word = word.next
next
end

puts location + " "+next_word + ":" #例:東京 駅:
p json["results"][0]["geometry"]["location"] #例:{"lat"=>35.689506, "lng"=>139.691701}
puts li.user.name + "@"+ li.user.screen_name #例:平田朋義@tomo3141592653

puts txt #例:東京駅に着きました

puts ""

end

word = word.next # 次の形態素に移動
end

end #次のツイートに移動




実行結果、抜粋。

本町 駅:
{"lat"=>34.681936, "lng"=>135.498982}
やしまこ!@yashimako_
I'm at 岩本町駅 (S08) (千代田区, 東京都) http://t.co/aAPJCt3L


厚 焼き:
{"lat"=>35.3044432, "lng"=>135.1069231}
pooɟɐǝs@hnnhn
パーティによさそう / “【ハウツー】炊飯器でつくる「厚焼きホットケーキ」 | ライフ | マイナビニュース” http://t.co/FoVHoMHi

秋葉原 事件:
{"lat"=>35.698683, "lng"=>139.774219}
吉田俊文@tsfmysd
今週の長岡ルーマン2006の固有値をもっとも読んだ人は俺に違いない。コミュニケーション一元論が、とりわけ昨今のグローバル化による格差現象や、資本要素価格均等
化(≒利潤率均等化)現象、GM、サププライm、秋葉原事件を鑑みたときその説明力に疑念がありうるのはここにあるのじゃないか?

博多 つい:
{"lat"=>33.59135759999999, "lng"=>130.4148783}
吉田俊文@tsfmysd
土曜の夕方に深夜バス乗れば、朝目覚めて最終授業出席できるな…… 14の夜に博多ついて、15にお見舞いと赤ちゃんに会いにいって、16にばあちゃんちと犬の散歩して、17に家族と博多で飯くって、18時に博多駅にもどると。完璧かもしれない。

飯田橋 合同庁舎:
{"lat"=>35.702065, "lng"=>139.745015}
やしまこ!@yashimako_
窓口の人が前回と同じだとやりやすい (@ ハローワーク飯田橋 合同庁舎) http://t.co/a1P8hFo4

感想:
foursquare経由などの発言はほぼ確実に抽出できる。

精度を上げるにはNG単語リストを作ったほうが良さそう。
例:焼き、事件、都民、人
など



posted by hougi at 12:27| Comment(17) | 日記 | このブログの読者になる | 更新情報をチェックする

2011年08月17日

google fusion tablesでgoogle my mapの代わりをやってみた。

なんかgoogle fusion tables が社内で流行ってるみたいなので、google my mapみたいなんを作ってみた。

京都おすすめ平田マップ

普通の観光案内にはあんまりでない場所を中心に京都で行きつけだった場所をまとめる感じで作ってみました。(まったくもって未完成、西陣方面と百万遍方面ばっかりですな。)
visualize->mapで地図が出ます。

感じたこと:
1.入力UIは分かりやすくて便利。

2.自動geo codingは便利。だけど京都の地名はその特殊性によりあんまし精度でない。(〇〇通り東入るとか)
この点に関しては、手動で『ジオどす』京都通り名ジオコーダ API を利用した。

3.画像出したり、種類別にピンの位置変えたり、iPhoneから表示できないものかな?あとリンク先が地図にはできないものだろうか?

4.こんな使い方ならmy mapのほうがいいかも。でもAPIも廃止されたし今後が不安。入力UIもfusion tablesのほうがいいな。いっそ共同編集にしたらどうだろう?


あ、ブログ埋込みの仕方分かったのでやって見る。

posted by hougi at 03:17| Comment(30) | 日記 | このブログの読者になる | 更新情報をチェックする

2011年01月07日

csvファイルのフォーマットを変換する2(Ruby)

前記事では、データにコンマが入っているcsvファイルには対応していないので別バージョンを作りました。



# encoding:utf-8
require "csv"

def make99(n=9,filename="99.csv") #九九のファイルを作る。
foo = File.open(filename,'w')

for i in 1..n
foo.print "A,B,"
for j in 1..9
foo.print i*j
foo.print ","
end
foo.puts " \n"
end

foo.close
end

def edit_csv2(namer,namew)


writer=CSV.open(namew,'w')

CSV.open(namer,'r') do |txt|
txtAryr =txt.to_a
txtAryw = txt.to_a#書き込み用に同じものを作っておく

#ここにやりたい処理を書く 以下は例
txtAryw[4],txtAryw[3]=txtAryr[3],txtAryr[4]#順番交代
txtAryw[1,2]=[]#削除
txtAryw[4,2]=["A,B","C"]#挿入
##################################

writer<<txtAryw #書き出し

end
writer.close

end

make99()
edit_csv2("99.csv","99_2.csv")


posted by hougi at 02:53| Comment(15) | 日記 | このブログの読者になる | 更新情報をチェックする

2011年01月06日

csv tsvファイルのフォーマットを変換する(Ruby)

Rubyの練習にcsv tsvのファイルフォーマット変換器を作ってみました。
csvのデータの中にコンマが入っている場合は対応していません。
列の入れ替えや、列の挿入、列の削除などの作業が簡単にできます。
こういう簡単な作業にいちいちエクセルを開くと非効率ですしね。
例では九九表を作りそれをいろいろいじっています。



# encoding:utf-8

def edit_csv(namer,namew,spr="\t",spw="\t")
#読み込みファイル名 書き込みファイル名 読み込み用区切り文字 書き込み用区切り文字
fh = open(namer,"r")
fw= open(namew,"w")
while !fh.eof
txt = fh.gets.chomp! #一行読む 改行記号を削る。
txtAryr = txt.split(spw) #読み込み用区切り文字
txtAryw = txt.split(spw) #書き込み用に同じものを作っておく

#ここにやりたい処理を書く 以下は例#############
txtAryw[4],txtAryw[3]=txtAryr[3],txtAryr[4]#順番交代
txtAryw[2,1]=[]#削除
txtAryw[4,2]=["A","B"]#挿入
###############################################


txtAryw.each do |word|
fw.print word
fw.print spr #書き込み用区切り文字
end

fw.print "\n"

end
fh.close
end

def make99(n=9,filename="99.tsv") #九九のファイルを作る。
foo = File.open(filename,'w')

for i in 1..n
for j in 1..9
foo.print i*j
foo.print "\t"
end
foo.puts "\n"
end

foo.close
end


make99()
edit_csv("99.tsv","99_mod.tsv")


posted by hougi at 12:11| Comment(20) | 日記 | このブログの読者になる | 更新情報をチェックする

2010年09月01日

iPadで読む電子書籍について

iPadをもって大体一ヶ月。アプリ購入や、自炊などでいろいろ本を入れてみた感想を種類別に記します。


1.iPad用に作成された電子書籍。

例:元素図鑑、Alice in Wonderland、Design Classics

これらは、iPadの性能をフルに生かし素晴らしい出来です。例えるならハリーポッターに出てくる動く新聞。紙を凌駕しています。才気あるクリエイターは作成に挑戦して欲しいです。

2.フォントが内包された本。

いわゆる電子書籍です。青空文庫など。論文のpdfをi文庫にHDに入れて読んだりもしています。読みやすいです。

3.フォントが内包されていない画像形式の本。

元サイズがiPadより大きいものは一画面一ページでは文字が霞んで読みにくくなります(scan時の設定と讀人に依存)。次のバージョンのiPadでは解像度がよくなって改善されるでしょう。ある程度のフォントの霞みなら、画面を遠くに離すことにより、脳に補完させ、ストレスなしに読むことが可能です。

3-1.雑誌

雑誌はたいてい元サイズがiPadより大きいですが、雑誌はトピックを選んで読むものなので、気になる記事だけ拡大して読めばOKです。Newsweek日本版を購読し始めましたが、快適です。

3-2.漫画

白黒が鮮明で紙より綺麗です。大判の漫画を入れることはまだ試していません。早く各漫画雑誌から好きな漫画だけを購入でき、毎週届けてくれる時代になって欲しいです。

3-3.小説

元が文庫本だと問題ないです。

3-4.技術書

元サイズが大判なものが多く文字が霞むので通読には多少ストレスを感じます。(同居人は全く問題ないといっています。)必要な箇所だけ読むなら問題ないと思います。

posted by hougi at 11:39| Comment(5) | 日記 | このブログの読者になる | 更新情報をチェックする

2010年08月19日

文字列の分割 C++

C++にはsplit関数がないので文字列を分割するのが面倒です。
Cにあるstrtok関数を使うのも面倒なので、検索関数findと部分列取り出し関数substrを用いて、文字列を二つに分けるサンプルコードを書いてみました。サンプルコードでは絶対パスの文字列を分割し、ファイル名を取り出しています。


    string inputfilename="a\\b\\c\\ddd.txt";

int div;//分割ポイント 
div=inputfilename.find_last_of("\\")+1;//+1は次の文字列を\\の後からはじめさせるため。
string firststr,laststr;
laststr=inputfilename.substr(div);//ddd.txt divから最後までを取り出す。
firststr=inputfilename.substr(0,div);// a\\b\\c\\ 最初からdiv前まで取り出す。

posted by hougi at 14:06| Comment(38) | 日記 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。