ニコニコの投コメで円周率2525桁を表示

ニコニコ動画の投稿者コメント(ニワン語)を用いて、円周率2525桁を表示するスクリプトを書いています。関連する自分の発言、取り組みをまとめました。
1
shin @shin_nicogi

@g0gaga いえ、a="1000文字漢字"; p = "円周率を漢字で表現"で ; pi = ""; p.size.times(\(pi+=a.indexOf(p[@0])+""))みたいな感じです。もちろん左は0埋めです。わかりにくくてすいません。。。

2012-06-06 21:25:54
shin @shin_nicogi

@g0gaga そのとおりです! 2コメ2048文字で5000桁の円周率表示はいけるかもしれませんw

2012-06-06 21:33:14
shin @shin_nicogi

@g0gaga そうですねw 2526桁以降はどうでもいいなら、圧縮文字列aの末尾を登場していない漢字で埋めるという手もあります。100~200字増えてしまいそうです。。。

2012-06-06 22:10:08
shin @shin_nicogi

@g0gaga 1コメはきびしいです。。。 この辞書を定義せずに生成するという方法は悪くないと思ったのですが。あと何ひねりか必要そうです。

2012-06-06 22:36:43
shin @shin_nicogi

@g0gaga まじですか! 自分も今新しい方法思いついたので、試すところです。

2012-06-07 21:30:14
shin @shin_nicogi

@maigo_no_koneko たぶん、圧縮された文字列から辞書を生成するんです。

2012-06-07 22:22:57
shin @shin_nicogi

randが同じ引数に対して常に同じ値を返すなら、randが、下3桁が000~999を返すような文字を全て調べ上げたら、辞書なしで1/3に圧縮できる!! gagagaさんの手法ってまさかこれじゃあ。。。

2012-06-07 22:44:38
shin @shin_nicogi

円周率2525桁に000~999がすべて現れるわけじゃないし、ごり押しで調べることも可能。

2012-06-07 22:47:25
shin @shin_nicogi

毎回0から1000の数字からランダムに1つ選ぶ。あらかじめ決められた570個の数字をすべて1回以上出すには何回くらいの試行が必要か。

2012-06-07 23:02:51
shin @shin_nicogi

毎回0から999の中から1つの数字をランダムに選ぶとき、n回目の試行までであらかじめ決められた570個の数字の中ですでに表れている数(期待値)をa_nとすると、a_(n+1) = (570-a_n)/1000 + a_n かな。a_nが569.5を超えるnはおよそ7000

2012-06-07 23:20:53
shin @shin_nicogi

randの引数として平均7000個の文字を調べないと、円周率2525桁に登場する570個の3桁数字が列挙できない?? これが正しいなら無理やろ。

2012-06-07 23:22:39
shin @shin_nicogi

ニワン語で円周率2525桁表示、やっぱりrand圧縮しかないんかな。1コメ1024文字を切る方法がまったくおもいつかない。

2012-06-08 22:36:32
shin @shin_nicogi

randじゃなくても、ニワン語で文字を数字に変換する何かがあればいいんだけどねぇ。しかもその変換の法則がわかってればなおよい。

2012-06-08 22:41:09
shin @shin_nicogi

rand関数のロジックでもいい。

2012-06-08 22:42:50
shin @shin_nicogi

ニワン語は "あ" < "い" でちゃんと真偽判定できるみたいだから、文字にも何らかの数字は割り当てられてるはずだけど。。。

2012-06-08 22:46:39
shin @shin_nicogi

"あ"と"い"の差が1で、"あ"と"う"の差が2であることを計算できるだけでも、目標の円周率表示スクリプトはできる。

2012-06-08 22:48:15
shin @shin_nicogi

randの返す値を調べる方法。このページの表(http://t.co/u8QWpkfh)をコピーしてtxt化。プログラムでtxtから文字一覧を抽出。各文字のrandの下三けたを順に表示するニワン語動画を作成。動画をキャプチャ。動画を画像処理して各文字に対応する下三けたを求める。

2012-06-08 23:14:06
shin @shin_nicogi

手で調べたらなんか負けた気がする。

2012-06-08 23:15:37
shin @shin_nicogi

動画キャプして画像処理で求めるとか、なんか無駄な気がしてきた。 randの下3桁を表示するニワン語動画再生しながら、エクセルに3桁を手動で打ち込んでいく方が明らかにはやい。

2012-06-08 23:40:03
shin @shin_nicogi

圧縮に使う文字一覧が作成できたけど、2600個でrandの引数にして、下3桁の数を調査するにはまだ足りない。。。

2012-06-09 00:24:44
shin @shin_nicogi

randの返り値調べる対象はUnicodeの0x7000から0x9000の8192字にするか。これだけあればrandの下3ケタも円周率2525桁に使うものが全部出てくるはず。期待値的に。

2012-06-09 00:40:17
shin @shin_nicogi

rand関数の戻り値を146個の文字について調べるのに15分くらいかかった。動画に戻り値を出してひたすらエクセルに手入力。 このままやると、8000文字調べるのに15時間以上かかる?? 

2012-06-09 01:45:32
shin @shin_nicogi

15時間もあれば、普通に画像処理で動画に表示された値をファイルに落とすプログラム書けるんじゃね。

2012-06-09 01:46:53
shin @shin_nicogi

OpenCVで精度の高い数字認識のサンプルないかな。

2012-06-09 01:47:35