2008-06-01から1ヶ月間の記事一覧

SparkProjectのコミッタになりました。

Spark Projectの人たちがとても楽しそうなので、仲間にいれてもらいました。でも、コミットするまでは兄弟と認めてもらえないらしいので、早めにコミットしようと思います。 とりあえずByteCodeDisassemblerをAIRアプリにしようと考えてます。

Problem53 - Project Euler

30分プログラム、その327。Problem53 - Project Euler。 12345から3つ選ぶ選び方は10通りである. 123, 124, 125, 134, 135, 145, 234, 235, 245, 345.組み合わせでは, 以下の記法を用いてこのことを表す: 5C3 = 10.一般に, r ≤ n についてnCr = n!/(r!(n-r)!…

コマンドラインからGODIを使う

いままで、GODIは対話的にしか使えないとおもってたら、実はコマンドラインから直接使えた。ただ、検索機能がないっぽいので、grepとかと組合せないといけないかもしれない。 # 一覧出力 $ godi_console list # OUnitのインストール $ sudo godi_console per…

Problem52 - Project Euler

30分プログラム、その328。Problem52 - Project Euler。 125874を2倍すると251748となる. これは元の数125874と同じ数を含む. 2x, 3x, 4x, 5x, 6xがxと同じ数を含むような最小の正整数xを求めよ. 普通に1から順に調べてみた。数字を桁ごとに分解してソートし…

Javascriptはメタクラスが簡単に扱える

Javascriptのクラスは、Prototypeでつながっているだけだから、クラスとインスタンスの違いがすごくあいまい。だから、ごくあたりまえにメタクラスやら、メタメタクラスが扱える、すごい言語なのかもしれない。 ただ、MOPが使えるわけじゃないから、あんまり…

Probelm51

30分プログラム、その327。Problem51 - Project Euler。 ちょっと方針を変えて、適当な素数を1つ選んで、それを置き換えて素数かどうか確認する方法にしてみた。とりあえず、計算は進んでるみたいだけれども、まだ答えはでてない。追記: 2時間ほどかけて、答…

Problem51、難しい

昨日のid:mzp:20080624:eulerをもにょもにょいじくってたけれど、どうも解けない。 明日は、ちょっと方針を変えてトライしてみよう。

Leopard買った

XCode 3.0が使いたかったので、Leopard買ってきた。OPムービーがあるOSってそんなにないんじゃないだろうか。

Problem51 - Project Euler

30分プログラム、その326。Problem51 - Project Euler。 *57の第1桁を置き換えることで, 157, 257, 457, 557, 757, 857という6つの素数が得られる. 56**3の第3桁と第4桁を同じ数で置き換ることを考えよう. この5桁の数は7つの素数をもつ最初の例である: 5600…

Gaucheの+.ってR5RS違反じゃね?(字句的な意味で)

R5RS(日本語訳)を読む限りは+.は、字句的に識別子に使えない気がする。 <識別子> → <頭文字> <後続文字>* | <特別な識別子> <頭文字> → <英字> | <特殊頭文字> <特殊頭文字> → ! | $ | % | & | * | / | : | < = | > | ? | ^ | _ | - <特別な識別子> → + | - |…

浮動少数サポート

http://github.com/mzp/scheme-abc/commit/3cf6fa7c5c3719ebce25bdebcc17d21d1bed76c8 id:llaさんとid:MaDさんのおかげで浮動小数が使えるようになった。 (print (+. 1.0 2.2)) 浮動小数演算は、OCaml風に+.や*.にしてみた。Gauche風とも言える。

doubleを整数に変換したい(バイトコード的な意味で)

IEE 754倍精度浮動小数をバイト列にエンコードしたい。Cとかなら簡単に変換できるのだけども、OCamlでやる方法が分らない。 union { long n[2]; double f; } x; x.f = 42.0; // x.n[0]とx.n[1]がエンコードされたやつ ちゃんと仮数部と指数部を抜きだして、…

詳解 Objective-C読み終った

詳解 Objective-C 2.0作者: 荻原剛志出版社/メーカー: ソフトバンククリエイティブ発売日: 2008/05/28メディア: 大型本購入: 52人 クリック: 603回この商品を含むブログ (146件) を見る最初に書いてあるとおり、XCodeやCocoaの説明はあまりなくて、Objective…

再帰サポート

http://github.com/mzp/scheme-abc/commit/520b7e7a3f4ebe086a5aaedfb0b51627333b1909再帰が使えるようになったぜいっ!letrecでもdefineでも使えるようになってます。 (letrec ([fact (lambda (n) (if (<= n 1) 1 (* n (fact (- n 1)))))]) (print (fact 10)…

Problem50 - Project Euler

30分プログラム、その325。Problem50 - Project Euler。昨日のやつ(id:mzp:20080620:euler)の改良版。ログメッセージを出すようにしたのと、ちゃんと答えを表示するようにした。 使い方 1> problem50:solve(1000000). sive prime:2 sive prime:3 ... sive pr…

Problem50 - Project Euler

30分プログラム、その324。Problem50 - Project Euler。 素数41は6つの連続する素数の和として表せる: 41 = 2 + 3 + 5 + 7 + 11 + 13.100未満の素数を連続する素数の和で表したときにこれが最長になる. 同様に, 連続する素数の和で1000未満の素数を表したと…

no warnings 'recursion';

404 Blog Not Found:perl - use warnings; # -w でなくてのはてブコメントに何気なく use warningsで再帰を書くと、毎回警告されるのがうざい。 と書いたら、dankogaiとid:fbisさん(id:fbis:20080620)から凄い勢いで「no warnings 'recursion';使え」とツコ…

ユニットテストの結果出力を改善

http://github.com/mzp/scheme-abc/commit/cabe7a3139fbab0bb5b885e466f127a8f96d0538再帰を実装するまえに、細かい部分の手直しを。ユニットテストの出力がものすごく見づらいので、ちゃんと読めるようにした。昔の。 OUnit: expected: ("", 0, 0, 0, [15; …

hparserがforkされたー

昔、書いたはてな記法パーサが、id:secondlifeさんによってforkされました(g:subtech:id:secondlife:20080618)。ありがとうございます。http://github.com/hotchpotch/hparser/tree/masterたしかこれを書いた動機は、当時のはてな記法にはなかったシンタック…

スーパー牛さんパワー

$ apt-get .... This APT has Super Cow Powers. $ apt-get moo (__) (oo) /------\/ / | || * /\---/\ ~~ ~~ ...."Have you mooed today?"...$ aptitude help ... この aptitude にはスーパー牛さんパワーなどはありません。 $ aptitude moo このプログラム…

Problem49

30分プログラム、その323。Problem49 - Project Euler。 項差3330の等差数列1487, 4817, 8147は次の2つの変わった性質を持つ。 (i)3つの項はそれぞれ素数である。 (ii)各桁は他の項の置換で表される。 1, 2, 3桁の素数にはこのような性質を持った数列は存在…

はてダラ エラー?

はてダラが"Day too big"とか言うんだけれど、何事だろう。ソースには該当する文字列がないから、ライブラリ側か? $ hw Skip login. Post 2008-06-17. Day too big - 24997 > 24855 Sec too small - 24997 < 74752 Sec too big - 24997 > 11647 Post OK. Skip…

再帰関係のABC

再帰関係のABCを淡々と貼るよ。callerとcalleeは意図的に無視してるよ。あと、Yコンビネータとか。 普通の再帰 function forever(){ forever(); } var undefined():* /* disp_id 0*/ { // local_count=1 max_scope=0 max_stack=1 code_len=7 0 findpropstric…

ObjectiveCはLLっぽい

詳解 Objective-C 2.0作者: 荻原剛志出版社/メーカー: ソフトバンククリエイティブ発売日: 2008/05/28メディア: 大型本購入: 52人 クリック: 603回この商品を含むブログ (146件) を見る最近、詳解 Objective-C 2.0を読んでる。id:banjunにいつまでも負けてら…

クロージャ対応

やっとクロージャが使えるようになった。 (define (k x) (lambda (y) x)) (print ((k 10) 20)) 大変だったけれど、できてしまえばたいしたことない。 実現するにあたって、レキシカルスコープの実現方法を変更した。 レキシカルスコープの実現 いままでは、P…

Problem48

30分プログラム、その322。Problem48 - Project Euler。 次の式は、11 + 22 + 33 + ... + 1010 = 10405071317 である。 では、11 + 22 + 33 + ... + 10001000 の最後の10桁を求めよ。 正直にやったらどうなるんだろう、とRubyでワンライナーを書いたら解けて…

Problem47

30分プログラム、その321。Problem47 - Project Euler。 連続する2つの数がそれぞれ2つの異なる素因数を持つのは 14 = 2 × 7 15 = 3 × 5 の場合である.同様に連続する3つの数がそれぞれ3つの異なる素因数を持つのは 644 = 22 × 7 × 23 645 = 3 × 5 × 43 646 …

クロージャむずい

クロージャ、難しすぎる。 スコープには間違いなく値が格納されているはずなのに、findpropertyで探せない。なぜだ・・・。

Problem46

30分プログラム、その320。Problem46 - Project Euler。 Christian Goldbachは全ての奇合成数は平方数の2倍と素数と和で表せると予想した. 9 = 7 + 2×12 15 = 7 + 2×22 21 = 3 + 2×32 25 = 7 + 2×32 27 = 19 + 2×22 33 = 31 + 2×12 後に, この予想は誤りであ…

変数回りの整理

変数回りの仕組みで、頭がごちゃごちゃしてきたのでちょっと整理してみる。 実現方法 変数はAVM2では、スコープオブジェクトのプロパティで実現する スコープは、いくつか積み重ねれる。スコープチェーン? スコープチェーンからプロパティを持つオブジェクト…