トップ «前10日分 最新 次10日分» 追記

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|

ToDo:


2010-08-03

_ ちゅーりんぐ

http://slashdot.jp/apple/article.pl?sid=10/04/14/0132226

を見てした発言

00:32 >shinh< おやチューリング完全じゃなければプログラミング言語ではないという切り口はどうなんでしょうね
00:32 >shinh< 強烈に便利だけどチューリング完全じゃない言語を開発して内蔵…

まぁ元の前提がおかしい議論なので Apple 対策としてはどうでもいいんだけど、 チューリング完全じゃないけどそれなりに色々できる、 みたいなのを考えるのは少し面白いような、 どうでもいいような。

例のごとく今一つチューリング完全ってなんなのかよくわかってないのだけど、 まぁ例のごとく brainfuck が実装できないなーって感じであれば良いことにする。

ゲーム用スクリプトとして使えるレベルとかなら、 代入、加減乗除など、 if-else 、回数指定で1000回まで回れるループ、 とかくらいならチューリング完全にはならない?

あと関数あるけどスタックサイズが 10 までしかありませんよとか。

(00:41)

本日のツッコミ(全4件) [ツッコミを入れる]

_ mame [HQ9+ のことですね、わかります]

_ shinh [たしかに FizzBuzz くらいがついていれば僕の書くプログラムの5割程度を網羅できてるかもしれませんね]

_ Gimite [たいていのプログラミング言語は(実行環境を考えると)記憶領域は有限だし実行時間も有限(ハードウェアの寿命が上限)なの..]

_ shinh [その論を防ぐために、僕の脳内でのチューリング完全はメモリが N ある時にメモリが N あるチューリングマシンと同じ計..]


2010-08-01

_ JS で文字コード変換

ブラウザさんは文字コードテーブル持ってるのに それ使えないの…という雑談を少しして、 できるような気がしたのでやってみた。

http://shinh.skr.jp/tmp/uconv.html

data: との通信は cross domain 通信扱いのようなので、 SJIS => UTF8 の方は困ったなーということで、 変換後の文字列を持って元のドメインに戻ってくるとかしてゴマかした。

(00:01)

_ ELF

でまぁ内職は2時間くらいで電気切れていまいちだった。 ネットとかはいらんから電源は欲しいなぁ…

木金とネットあんま使わずに Mach-O を 適当に読むとかやってたんだけど、 まぁネットあったら dyld のコードというか、 MachOBinder.hpp があれば割と一発でわかる感じなのであった。 特に Mach-O の relocation table は .debug_lines 的な VM になってると気付いて、こりゃネット無しじゃ無理だわいとなったのだった。

あと uleb とか sleb ってどっかで見た単語だなーと思ったら DWARF だった。 何故か少し前にこのへんは気の迷いで実装してたからすぐ実装できて良かった。 つまり Mach-O は DWARF とかより後で成立したから そのへんの知見を生かせてるのかなぁとか思った。

Mach-O があきらかに ELF よりいいなぁと思えた点は、 64bit になっても構造体のサイズが変わらないオブジェクトが結構あることで、 まぁコードが書きやすくてよろしいと思った。 ELF は全体がキモいテンプレートかマクロの塊になってしまっていかんと思う。

あとはなんか Mach-O 全体的に意味のわかってない フィールドが多い。

それと変数名に macho とかするとマッチョだし、 mach_o とか冗長な感じだし、 mach だとちょっと足りない気がするし、 困る。

(00:31)

_ あきはばら

トプカおいしかった。

りなっくすかふぇは周りの会話がほどよくて良かった。 僕は気が散る程度の雑音がある方がいいんだよな。 あとまぁ雑音の内容自体が興味深かったりも。

ネットは無かったけど普通に考えて 僕はあそこの無線使う権利を持ってる気がするので、 さっさとそれは設定すべき。 まぁネットあることによる害を考えるとまぁいいか的な。

http://twitter.com/shinh/status/20050925021

この SEGV するところまで行ったという発言はよく考えると意味わからんけど、 linux のローダはロード中にエラー出ると SIGKILL で死ぬので、 SEGV した時は結構嬉しかったんですよ。 つか冷静に考えるとどういうメカニズムで SIGKILL になってるのだろうか。 ちょっと不思議な気がするぞ。

よく見るとローダ内の SEGV だからまだおかしいんだけどね…

空気清浄機というのが欲しくて見に行った。 さっぱりスペックの差がわからん上に、 小さくて加湿器つきみたいなのが無かったので、やめた。 安いやつは、大きくて加湿器つきが15000くらいで、 小さくてついてないのが8000円くらいみたいだった。 なんか wikipedia 見る限り高性能ぽくないやつの方が安心できそうな商品だなぁ。

ついでに乾燥機つきのが欲しいんだよなーと、 洗濯機を見てて買った。 設置と回収含めて43000くらい。 今のやつは壊れてないので僕の中のもったいないおばけがうるさかった。 けど、今のやつ15000円もしてないし、一応4年は使ったし、 干すのにかかる時間は無駄じゃありませんか、 それにそんなに高くないし、などと説得した。

あと温度計と湿度計が欲しかったから見てみたんだけど、 なんか店に展示されてるものが、 一つ一つ結構違う湿度を指していたり、 温度すら違うのもあったりして、 えーとうーんとか思ってびびってしまった。

メモ: 僕は 7877 ポイントもヨドバシポイントを所有しているよ

(22:12)

_ libc6-dbg

これを入れると loader の stacktrace がちゃんと出るみたいだ… べんり。

あと斑鳩やったら5面に2機持って1400万とかあって、 うおおこれはワンコインクリアコースと思った。 まぁ5面道中でチェイン切れまくって残機増えなかった上に、 タゲリ第一で3機とも死んだわけだけが…

ちょっと前にドキャで練習した成果が出てると言えると思う。

なんか思い出すに、1面で死ぬのと、3面の前半で死ぬのはひどいからなんとかすべき。 あとは4ボスで死んだんだっけ。なんでそこで死ぬねん的な場所ばかりだな。 2面は一回も切れなかったらしく、 S++ とか出て笑った。

(23:01)

_ rakudo star crash 予習

基本的なやつを試してみた。

sub n($n) {
  return eval("1+" x $n ~ "0");
}
say n(3);    # 3
say n(100);  # 100
say n(300);  # 300
say n(500);  # exit(0) \(^o^)/
say n(1000);

クラッシュしなかったのは偉いが、 せめて exit(1) とかしようよ

(23:32)

_ ゴルフ場に入れた時の rakudo

は n(500) と n(1000) で Nil が帰ってるっぽい、のかな

(23:35)


2010-07-31

_ LL Tiger

クーラーこわれてる部屋は暑すぎるので とにかく家にはいられないということで 割とさっくり行く決意ができた。

Perl6 の lazy list の例はどうでもいい感じだったんだけど、 こうフィボナッチ持ってる lazy list とかもできるんだろうな… とこれは後で調べる。 ていうかゴルフ場の rakudo も update するか。 あとゴルフ場の rakudo は1秒ちょいで返事かえすので、 LL Eval はちょっとなんなんだろと思った。

LT は例のごとくお前らボケてる暇あったら技術の話しろ… っていうのも多かったなぁ。 記号 x86 とか無説明すぎて結局意味なかった。 まぁあれは当人じゃないからしょうがなかったのかも。

ライセンスと電子出版とフィジカルコンピューティングはそれぞれ 面白かったと思う。それぞれあんま LL ぽくないけど。

JSC/v8 の worker が native thread か否かとか、 まぁ普通に知らん。 まぁスレッド間通信が message passing しか無い以上、 native thread かつ giant lock も無いだろうなぁという 予想は高確率で当たってると思う。 ruby とか python は処理系作ってる人が愚かなのではなくて、 単にメモリ共有する thread だからしょうがなく giant lock …って話だと思う。 いずれにせよ僕は reviewer であるという言い訳ができるので あの場にいた唯一の committer であろう omo さんの罪は重い。

さて message passing というのは、 mootoh さんに完全同意で、並列屋には極めて重要な primitive になるんだろうなーと思う。 message passing って何な質問に MPI を例にしたのはたぶんあまりいい解答じゃなくて、 さっと答えるのは結構大変なんじゃないかなーと思う。

重要なところは、

  • 共有メモリによって、こっそり行なわれてる通信を排除もしくは強く制限する
  • で、通信は明示的に message passing でやりとり

何が嬉しいかというと

  • 最悪のバグの一つであるところの、 race condition が無い
    • これは半分嘘で、同じメモリに同時に触っちゃったー的な race condition が無いだけで、アプリケーションロジックにバグ入れるとかはいくらでもできる
    • が、それもまぁそれなりに message passing 前提な API をうまいこと切ればだいぶ抑制できるんじゃないかね
  • データ待つ系の処理は lock いらない
    • これはメリットなんだろうか

あと僕の強い希望として

  • 言語作る人は message 送ってきた元の stacktrace を送られた側から参照できるようにしておいてください…

でまぁ、これまたオブジェクト指向並に 「短くて必要性を強く訴えられる例」を 考えつきにくい機能なんじゃないかなぁとか漠然と思った。

オブジェクト指向で猫と犬がニャーワンって、 結構あれがわからんという人は 身近にもネットにも結構いたと思う。 僕はオブジェクト指向ってのは それなりにすぐにわかったんだけど、 まぁ僕が天才であるとかではなくて、 単純にそれまでに書いたコード量の問題だと思う。 message passing とかも それまでに thread のコード書いて、 race ったり race ったり race ったり してるとまぁ感覚的に必要な気がするんだよね。

でもまぁうまい例を考えてみるのはいいと思う。

それにしても暑すぎるので明日もどこかに行かんといけない… 最近よくりなっくすかふぇというのを見るし、 電源もありそうだしトプカ行きたいし行ってコード書きの続きするかな…

あああと一個宿題があったんだった

(21:48)


2010-07-30

_ shibuya.js

全体的に面白そうだったから行きたかったな。

  • 先日のおかげで赤青眼鏡は手元にあった
  • 顔文字 86 は大変そう
  • JS の timezone はめんどくさいよねえ
  • class2js すごいとこまで行ってるなー

(22:24)

_ LL

shibuya.js が面白かったので LL Tiger 行こうかという気が起きてきた。 やりたいこともあるけど、ノート PC でそれなりに内職もできるだろうしな。

(22:37)


2010-07-29

_ くーらー

も壊れたっぽい。

みんな夏ばてかのう

風は出るんだけど冷たくない。 死ぬかと思ったけど窓開けて扇風機まわしたら 普通に寝つけた。 まぁ消してから寝てもタイマーで切れても大丈夫なんだし死なないか…

(06:57)

_ PLT とか

http://shinh.skr.jp/m/?date=20090727#p01

あれから1年たってる!

今一つ覚えてないけど、 なんとなく思い出せるから久しぶりにいじってみるか…

メモを見るに PLT の方が課題って感じ?

(07:32)

_ Mach-O

どうも俺は Mach-O について微妙に知ってるのに、 全然作ったツールとか出てこなくておかしい。 結局見つけたのはこれくらいか

http://spreadsheets.google.com/pub?key=pcoKcHzxsAsgfZ3aSIeDdcQ

(08:31)


2010-07-27

_ まっくぶっくのトラックパッドのボタン

なんかボタンが押しっぱなし状態になっていたり、 全然押せない状態になったり、 とにかくどっちかに固定されてしまう。 「macbook トラックパッド」で「故障」が suggest されるあたり、 よくあることなのかもしれない。

http://haru3.cool.coocan.jp/archives/pc/mac/08-187-0057.php

になんかなおしかたが書いてあるのでやってみよう…

(22:30)

_ まっくぶっくのバッテリ

トラックパッドのボタンが押しっぱなしになる問題は、 バッテリが膨らんでいるせいだと判明した。

つまり後ろから全力でバッテリが押してやがるから、 ボタンがおしっぱなしになる、と。 なるほどねえ。

バッテリがこの位置になかったら使えてたってことだよなーということと、 しかしこの位置になかったら気付かんくて危険だよなーということと、 を思った。

でまぁこの膨らんだバッテリは、 十分膨らんでいるために、もう中に入らないのであった。 つまりもうまっくちゃん動かないってことなの… と思ったけど、よく考えればバッテリはずせば動くのであった。

ただまっくの電源ケーブルって異様にアッサリ抜けやがるで有名なので、 ケーブル抜けるだけで電源断ってのはキツいか。 まぁいずれにせよ apple store に持って行ってみよう

(23:11)

本日のツッコミ(全3件) [ツッコミを入れる]

_ ogijun [ほっといたら燃えそうなのではやく交換に行ってください..。 はっきり膨らんでるときはたぶんお金かかりません。]

_ shinh [Apple Store に行ったら金取ると言われたのでバッテリは捨てて使うことにしました。あと燃やそうにもふくらみす..]

_ shinh [ていうか同じ症状の人多すぎと思いました。]


2010-07-26

_ Akinator

http://jp.akinator.com/

日本語化されたとのことで遊んでみた。

一度外したけど、エミリオミハイロフを当てられて心底びっくりした。 軍人かどうかはむつかしいなーと思った。

JB-5th は当てられなかった。 まぁ結局誰も入力したこと無さげだ

(23:08)


2010-07-24

_ \n

all: \n \n\n\n
: "FAIL\n"
.: "OK\n"
..: "FAIL\n"
...: "OK\n"

あれなんかこれはおかしい気がするぞ…

irb(main):004:0> /\A\Z/m =~ "\n\n"
=> nil
irb(main):005:0> /\A.\Z/m =~ "\n\n"
=> 0
irb(main):006:0> /\A..\Z/m =~ "\n\n"
=> 0

えーそうなのか。 PCRE 不思議。 改行一個までは無いもんとして扱える、って感じ?

まぁ PCRE がそうなる以上仕様だろうな

(06:41)

_ bot

http://build.webkit.org/results/Windows%20Release%20(Tests)/r63992%20(1883)/fast/text/

なんでまだコケてるんだよボケ! と思ったら r63992 とかで全然追いついてないのか…

この win bot がぶっこわれてる状態がずっと続いてるってのは Apple の人とか困ってないのかな…

もう体感で 2,3 ヶ月くらい壊れてる気がするが 実際どのくらいだろうな。

(07:15)

本日のツッコミ(全2件) [ツッコミを入れる]

_ Gimite [Rubyだと http://doc.okkez.net/192/view/spec/regexp \Z: 文字列末尾..]

_ shinh [おおそう書いてありますねえ。ありがとうございます。たぶん \z を使うべきだったんでしょうけど、まぁ忘れることにしま..]


2010-07-22

_ shortest 続き

http://shinh.skr.jp/m/?date=20100721#p04

自分でやらずに shortest は無いなーとか言うのもずるい気がしたので書いてみた。 前に書いた通り exec すると意味なくなるから exec 封印で。 適当に書いて 490B 。別にゴルフはしてない…

import sys;s=[];reduce(lambda a,_:(a[0]or sys.exit(0))and[1>a[3]and a[0][0]==']'and s.pop()or a[0][1:],a[1]+[(a[0][0]=='>')-(a[0][0]=='<'),0][a[3]>0],a[2][:a[1]]+[1>a[3]and a[0][0]==','and ord(sys.stdin.read(1)or'\0')or a[2][a[1]]+(1>a[3]and a[0][0]=='+')-(1>a[3]and a[0][0]=='-')]+a[2][a[1]+1:],a[3]+(a[0][0]=='['and(0==a[2][a[1]]or 1==s.append(a[0])))-(a[3]and a[0][0]==']'),1>a[3]and a[0][0]=='.'and sys.stdout.write(chr(a[2][a[1]]))],iter(set,0),[file(sys.argv[1]).read(),30,[0]*200,0])

(01:03)

_ n 回 7

http://d.hatena.ne.jp/nishiohirokazu/20100721/1279687613

つまり kinaba さんの説通りっぽい感じだなぁ。

まとめておくか

  • Haskell: スタックが O(N) だったことと、 N に比例して allocation する量が増えてくようなパターンだったので GC 頻度が O(N) より大きくなった
  • Ruby: リストが O(N) だったこと、 理由の後半は Haskell と同じ
  • D: なめる空間が O(N^2) で GC 頻度は O(N)

あたりでみんな O(N^2) 以上の計算量になってたって感じか。

D に関しては O(N^3) なんだけど、 GC の頻度少ないので、 O(N^3) の係数が大変小さくて 間くらいのオーダに見えた、と。

正直色々やりたいことある時期に 比較的どうでもいい議論に時間を使いすぎた感もあるけど、 しかし GC は結構むつかしいもんだなーという勉強になった。

そういえば Haskell は stack が O(N) になっちゃうのは避けられないんだろうか。 うーん僕の脳内 Haskell 処理系では無理げだな。 つーことは、無限リストの 1億要素目をいきなり取り出すとか だいたい無理みたいなことになるのかあ。

(04:06)

本日のツッコミ(全15件) [ツッコミを入れる]

Before...

_ shinh [ああなるほど。そういう意味であれば、 Haskell のコードは普通に動的計画法で書いた時のコードに近いものになって..]

_ シンX [ああ、仰せのとおりです orz 多倍長加算のコストを途中で忘れてました。その計算量で良いです。 ところで、計算量理..]

_ shinh [ちなみにサイズ N のスタックになってるのは、 遅延評価された N 番目の fib を取ろうとする => あっまだ..]

_ shinh [でまぁプログラマは遅延する必要無いのはよく知ってるのでこれ正格評価してくだっせーと教えてやれば stack 使わんよ..]

_ シンX [理解しました。解説ありがとうございました。というかわざわざすみません m(..)m]


2010-07-21

_ GC

なんか gus さんの最初の直感、

http://twitter.com/gusmachine/status/18877553931

は Ruby と Haskell に関しては 正しいんじゃないかなぁとか思えてきたんだ…

まず世代を忘れる。 仮に領域を確保するたびに GC が走るアホ GC があったとして、 今回のプログラムはメモリの解放は起きないので、 copying だろうと mark and sweep だろうが 一回の GC の走査量はたかだか N^2 。 それが N 回起きるので O(N^3) になって、 これが最悪のオーダーで、 O(N^2) の領域使ってるんだから O(N^2) 以上はかかるでしょ、 という理由で最小 O(N^2) なので、 まぁ O(N^2) から O(N^3) のどこかにおさまるべきでしょう。

ところで今回のプログラムは、 確かにメモリは N^2 使うんだけど、 オブジェクトの数はたかだか 2N 個しか無い。 だから一回の mark and sweep GC の 走査量は O(N) なんじゃないだろうか。 だとすると仮に毎度 GC 走るアホ GC だとしても、 たかだか O(N^2) じゃね?

…というような理由で、 Ruby の O(N^2.47) が謎に思えてきた。

次に Haskell 。 Haskell はそもそも普通に GC しててメモリ消費量は O(N) なので、 何がどうなってようがたかだか O(N^2) なんじゃなかろーか。

最後に D は、これも mark and sweep なんだろうけど、 コンサバなもんですから、 O(N^2) の空間なめちゃうんじゃないか (Ruby は BigNum の中はなめないよね?)。 つまり、仮にアロケーションのたびに GC が走ってたなら O(N^3) になりうる。

あとはどのくらいの頻度で GC が起きるかってのが問題。 単純に vector みたいに倍々で増やしてたりすれば O(N^2) になるはず。 D の gcx.d とかをチラ見するに、

  • 4k 以上の allocation (たぶん今回はほぼこれだろう) は bigAlloc を通りそう
  • bigAlloc は既存の pool を巡回して、空いてるのが無ければ full GC => それで足りなければ newPool
  • つーわけで newPool 時に allocation するサイズが問題である
  • newPool をざっくり読む
    • まず確保する page 数を今欲しい数の 1.5 倍にする
    • で、 pool の数が 2 個目だと最低でも 2MB 、 次は 3MB …となって、 8 個を越えると固定で 16MB, 32 個を越えると 32MB って感じで pool 最小値を決めていく
    • 32 個を越える段階では 400MB とか allocate してることになる気がするので、結局数 MB から 16MB 程度の allocation をしていく、ってことになるんじゃないかと思う

で、定数ずつ allocation していくとか、 2,3,4,... という感じで定数ずつ allocation する量が増えていく、ってやり方だとあっさり O(N^3) になるわけだけど、数 MB 単位で allocation してるなら、そもそも今回のベンチマーク程度だと、 GC が起きる総数がそんなに多くないので、 O(N^2) の方が十分に強くて、間くらいのオーダーに見えた、ってのはアリかなー。

適当に simulation を書いてみた。

#!/usr/bin/env ruby

use_size = 0
heap_size = 1000000
next_gap = 1000000
num_gcs = 0

simulated_time = 0
gc_time = 0
calc_time = 0

1.upto(100000) do |n|
  use_size += n / 20
  if use_size > heap_size
    while use_size >= heap_size
      heap_size += next_gap

      #next_gap = heap_size
      #next_gap = Math.sqrt(heap_size).to_i
      #next_gap += Math.sqrt(next_gap).to_i
      #next_gap += 100
      if next_gap <= 8000000
        next_gap += 1000000
      else
        next_gap = 16000000
      end
    end

    # Time for GC.
    num_gcs += 1
    gc_time += use_size
    simulated_time += use_size
  end

  calc_time += n / 2.5
  simulated_time += n / 2.5

  puts "#{n} #{simulated_time}" if n % 100 == 0
end

STDERR.puts heap_size / 1024 / 1024
STDERR.puts num_gcs
STDERR.puts gc_time
STDERR.puts calc_time

calc_time を増やす時にかかっている /2.5 は、 gc_time と calc_time をだいたい同じにする程度に normalize している。

これを fit すると O(N^2.55216) とのこと。 この指数は / 2.5 の部分を適当に調整すると色々変わる。

グラフはこんな感じ

gc_sim.gif

つーわけで、 D に関しては実は O(N^3) なんだけど、 GC が適当に現実的なメモリに対してでかいと 考えられる単位で allocation しているので、 GC 頻度が少なく、 O(N^3) の係数が十分に少ないために O(N^2.5833) とかに見えた、って説はどうだろう。

実際数えてみた。 gdb で fib を走らせて、 _D2gc3gcx3Gcx16fullcollectshellMFZk に break 仕込んで cont 連打。N==100000 で 39 回とのこと。 上の simulation コードは 22 回だと言ってるのでそれなりに回数にずれがあるけど、 いずれにせよこんだけ少ない回数しか O(N^2) の operation が起きてないんなら O(N^3) に見えなくても納得できる感じかな。

あと上のコードの next_gap を色々調整してるうちに 気付いたんだけど、 next_gap += Math.sqrt(next_gap) 的な 増やしかたをしていると、 なんか O(N^2.6) あたりになる。 でもまぁそいう実装になってないっぽいのであんま関係なさげ。

(00:35)

_ 39 回の fullcollect

以下は、左から、 GC の回数、その GC の時 fib のどこを計算してたか、前回との差分、って感じ

1 3686 3686
2 5775 2089
3 7165 1390
4 10228 3063
5 13058 2830
6 15618 2560
7 18690 3072
8 22274 3584
9 24939 2665  // ここから毎回 bigAlloc によって fullcollect が呼ばれるようになった
10 29035 4096
11 33131 4096
12 37227 4096
13 41323 4096
14 45419 4096
15 48265 2846
16 50313 2048
17 52361 2048
18 54409 2048
19 56457 2048
20 58023 1566
21 59958 1935
22 62091 2133
23 64139 2048
24 66187 2048
25 68235 2048
26 70283 2048
27 72331 2048
28 74379 2048
29 76427 2048
30 78475 2048
31 80523 2048
32 82571 2048
33 84619 2048
34 88715 4096
35 92811 4096
36 96009 3198
37 98739 2730
38 99999 1260

最初の 1 回はプログラム開始時みたいなタイミングで呼ばれてたので除外。

うーんやたら定期的に呼ばれすぎ感が。 なんかおかしいなぁ。

(01:07)

_ あと

Ruby とか Haskell とかは実は GC とかまるで関係なくて 多倍長整数の実装のしかたとかそのへんが関係してるとか無いもんか

(01:08)

_ shortest

http://blog.hackers-cafe.net/2010/07/shortest-oneline-brainfck-interpreter.html

いくら one liner でも 558B で shortest はたぶん無いなー。

python one liner ってのは面白いネタだと思うんだけど、 ただ exec は封印しないと全く意味ない縛りになっちゃうよなぁ。

とりあえず codegolf.com の top は 200 切ってるし、 僕が適当に書いても 335B とかで書けて、 exec 使って one liner にしたら 362B 。 さてこれをファイルから読むとかやっても 400B にはならんだろーから、 まぁ少なくとも exec 使うのは自粛すべきだな。

で、最短の bf インタプリタって常識的に考えて… っていう意味で矛盾がまたあるんだが。

(01:28)

_ そっちはどでもよくて

http://blog.hackers-cafe.net/2010/07/haskell-quiz-answer.html

こっちは大変勉強になったのだった。 なるほど a とか b の overload ってのができるんだなあ

(01:31)

本日のツッコミ(全1件) [ツッコミを入れる]

_ k.inaba [Haskellのは、自分のとこではO(N^2.6)とか全然再現せず普通にO(N^2)に見えるのでという理由と、とりあ..]


2025年
7月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
1.shinh(2014-05-24 01:33) 2.Gimite(2014-05-24 01:33) 3.シンX(2014-05-24 01:33)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h