2001-07-17
λ. 昼起きてぼーっとしてたら悩んでた証明ができちゃった。有理数までは証明できてて無理数に拡大するにはどうしたら良いかと悩んでたんだけど、最初から背理法使えば良かったのね。こういうのって、何て言うか、快感。
λ. 来週の月曜にテストが終るまでは課題以外のプログラミングは自粛しよう。
λ. Matrixの落とし穴
ちょっと行列の計算ではまった。気付けばどうってことないけど、結構落し穴かも。
irb(main):001:0
> require 'matrix'true
irb(main):002:0
> Matrix[[2, 5], [1, 3]].determinant6
irb(main):003:0
> Matrix[[2, 5], [1, 3]].inverseMatrix[[0, 0], [0, 0]]
irb(main):004:0
> require 'mathn'true
irb(main):005:0
> Matrix[[2, 5], [1, 3]].determinant1
irb(main):006:0
> Matrix[[2, 5], [1, 3]].inverseMatrix[[3, -5], [-1, 2]]
λ. 借りた本
- 「アリストテレス倫理学入門」
- J.O.アームソン(J.O.Urmson)[著] 雨宮健[訳]
- 「哲学の謎」
- 野矢茂樹[著]
- 「哲学ファンタジー」 / 原題「5000 B.C. and Other Philosophical Fantasies」
- レイモンド・スマリヤン(Raymond Smullyan)[著] 高橋昌一郎[訳]
- 「シンプルな情熱」 / 原題「PASSION SIMPLE」
- アニー・エルノー(Annie Ernaux)[著] 堀茂樹[訳]
- 「いつまでバグを買わされるのか - 平気で欠陥商品を売る業界の内幕」 / 原題「The Software Conspiracy - Why Software Companies Put Out Faulty Products, How They Can Hurt You, And What You Can Do About It」
- マーク・ミナシ(Mark Minasi)[著] 植木不等式[監訳]
λ. 買った本
- ジャンプ No.33
- -
- 「風の大陸」第二十部 水面下
- 竹河聖[著]
λ. 図書館
今日知ったんだけど、鎌倉市図書館ホームページってのがあるのね。図書館に出向かなくても蔵書検索が出来る…と思いきや、結構アレゲ。大体「入力文字は、Shift JISでお願いします。」って何だ? accept-charsetを指定しろよ…
λ. バイト
ところで、夏休みのバイトはどうしよう。誰か、楽で身入りの良い仕事下さい。(^^;; RubyとかGimpとか関係だったら言うことなしです、はい。
λ. グリフ = 文字 ?
そういうわけで、「グリフ = 文字」モデルでは不十分だと現在では考えられているわけです。何故不十分かと言えば、グリフでない単位を「テキスト処理単位」(つまり「文字」)としているスクリプトや、同じ「テキスト処理単位」が、語頭、語中、語尾で異なるグリフとなるようなスクリプトが実際にあるためね。しかも、ある「テキスト処理の単位」の語頭形のグリフと、他の「テキスト処理単位」の語中形のグリフが同じ…なんていう事すらある。もっとも、残念ながら僕にはそういうスクリプトは読み書きできないんだけどね。(そうそう、アラビア語を選択したかったのは、そのあたりの実際を知りたいという不純な動機もあったのだ。)
2004-07-17
λ. 素数リスト
RHG読書会後ジョナサンで mini Haskell Marathon と称して数人でコードを書き散らかしたが、その中に僕が書いたコードで素数のリストを以下のように定義するのがあった。
prime :: [Integer]
prime = 2 : [n | n <- [3..], f n]
where f n = all (\p -> n `mod` p /= 0)
(takeWhile (\p -> p <= g n) prime)
g = floor . sqrt . fromInteger
こいつが well-defined であることはさすがに自明ではないな。
考えてみると、3以上の任意の自然数nに対して、
floor(√n) < p < n を満たす素数pが存在すれば、
こいつが takeWhile (\p -> p <= g n)
に対する番兵になって
無限ループに陥らないはずだ。
- n=3 のとき
- floor(√n) = 1 < 2 < 3 = n
- n≧4 のとき
- 「ベルトランの仮説(Bertrand's postulate) 」 ∀n∈N. (n≧2 ⇒ ∃p∈N. Prime(p)∧(n < p < 2n)) から、 ある素数pが存在して floor(√n) < p < 2 floor(√n) で、 ここで 2 floor(√n) ≦ √n floor(√n) ≦ n なので、 floor(√n) < p < n 。
というわけで、問題なしと。
2005-07-17
λ. 人狼占い
某氏の日記より。狩人やったことないんだけど……
- さかいさんは 狩人 です!
狩人さんのあなたは、ズバリ「縁の下の力持ち」。普段はあまり目立ちませんが、ここぞというところで頼りにされるタイプです。黙々と体を張る姿を、誰かがちゃんと見ていますよ。
あなたは生まれつき特殊な力を持っていますが、その力は誰かを守るためだけに使いましょう。守ることを重んじるあなたには、いつか素敵な奇跡が起こるかもしれません。ラッキーワードは「機転」と「不言実行」。控えめに着実に経験を積んでいけば、確実に結果がついてきます。
さかいさんのモテ度は、51点です!
そんなあなたの本日の運勢はこちらです!
4位 ★狩人
地下にある店でお食事を
λ. 人狼審問 : (705)フルメタルジャケト村
みんなの大好きなフルメタルジャケットがテーマの村。ヲチしよう。
(2005-07-22 追記) 結局人数が集まらず廃村になってしまったようだ。残念。あと、軍曹といえば、バーチャルネットサージェント軍曹様35歳もお勧め。
(2005-08-14 追記) (742)フルメタルジャケト村 は無事終了した模様。
λ. 『土地と日本人』 司馬遼太郎対談集
を読んだ。「司馬遼太郎、DQNだな」というのが最初の感想。資本主義だとか社会主義だとかそれ以前の問題。30年前の会話だとしても酷い。
2006-07-17
λ. Alephの振る舞いがわからない。
適当な背景知識と正例と負例を食わせたところ以下のようなルールを学習してくれた。Rule 1 と Rule 3 さえあれば Rule 2 は実際には不要に思えるが、何故 Rule 2 が残っているのだろう。
[theory] [Rule 1] [Pos cover = 3 Neg cover = 0] append(A, B, B) :- A=[]. [Rule 2] [Pos cover = 3 Neg cover = 0] append(A, B, C) :- A=[D|E], C=[D|B], append(E, C, C). [Rule 3] [Pos cover = 9 Neg cover = 0] append(A, B, C) :- A=[D|E], append(E, B, F), C=[D|F].
背景知識
% append.b :- mode(1,append(+list,+list,-list)). :- mode(1,((+list) = ([-any|-list]))). :- mode(1,((-list) = ([+any|+list]))). :- mode(1,((+list) = ([]))). :- mode(1,((-list) = ([]))). :- set(i,3). :- set(noise,0). :- set(print,1). :- determination(append/3,append/3). :- determination(append/3,'='/2).
正例
% append.f append([],[1,2,3],[1,2,3]). append([1],[2,3],[1,2,3]). append([1,2],[3],[1,2,3]). append([1,2,3],[],[1,2,3]). append([],[1,2,3,4],[1,2,3,4]). append([1],[2,3,4],[1,2,3,4]). append([1,2],[3,4],[1,2,3,4]). append([1,2,3],[4],[1,2,3,4]). append([1,2,3,4],[],[1,2,3,4]). append([],[],[]). append([1],[2],[1,2]). append([2,3],[],[2,3]).
負例
% append.n append([1],[],[]). append([],[1],[]). append([1,3,2],[],[1,2,3]). append([],[1,3,2],[1,2,3]). append([2,1],[3],[1,2,3]). append([3,2],[1],[1,2,3]). append([1,2],[3,4],[1,3,4]). append([1],[2,3,4],[2,3,4]). append([1,2,3],[4],[1,2,3]).
λ. Learning Minesweeper with Multirelational Learning. Lourdes Peña Castillo, Stefan Wrobel
を読んだ。ILPでマインスイーパーの推論規則を学習する話。
2009-07-17
λ. 日本Ruby会議2009 1日目
これから出発。
メモ
- Using Git and GitHub to Develop One Million Times Faster / Scott Chacon
- gitはよく知らなかったけど、gitの内部の概念は面白そうだ。 あと、githubでのforkがマージされた比率とかのデータも面白かった。
- Rubyの数 / 後藤 謙太郎
- Rubyの数クラスがどうしてこうなっているとか、1.9でRationalとComplexが組み込みになったとか。背景としてMatzがあるのに笑った。
- Ruby の標準乱数生成器とその改良案 / 村田賢太
- Array#shuffle が Kernel.rand に固定されているのは確かに困るか。 モンテカルロには乱数よりもLDS(Low-Discrepancy Sequences)が良いが、間違った使い方をしたときは、乱数を使ったときよりも酷いとか。 rubyのバージョンによってアルゴリズムが変わったら、シリアライズは困るとか。まあ、やってやれないことはないだろうけど。
- Rubyで楽しむBDD,ZDD / 倉井 龍太郎
- BDD(Binary Decision Diagram)とZDD(Zero-Suppressed BDD)のライブラリの話。BDDといえば Binary Decision Diagram しか知らなかったけど、同じ略語の Behaivior なんとかというのもあるらしい。ZDDは知らなかったけど、Cuddパッケージにもちゃんとあった……
- 静的型付けを持ったRubyっぽい言語の設計と実装 / 橋本和典
- 静的型付けを持つRubyっぽい言語TRuby。パーサはほとんどMRIのparse.yを再利用。コア言語tiby(ちびー)へ変換してコンパイル。関連研究に Diamondback Ruby (DRuby) と truby。 多相レコードのようなものは導入しなくていいの? というのと、多相レコードのような振る舞いベースの型と、最適化に使えるようなオブジェクトの構造に基づいた型とをどうやって橋渡しするのか、みたいなことを質問してみた。空気読んでない質問だったかも。他の人のコメントとしては、型よりも特殊化とかの方が良さそうではという話が。
- Ruby VMの高速化の展望 / 笹田 耕一
- 色々情報をとれるように。たとえばTDATAにメモリサイズを返す関数を登録可能に。あと、参照しているオブジェクトの一覧を返す関数とかも考えているとか。 インスタンス変数アクセスの高速化のために、インラインキャッシュで、クラスとインデックスの組をキャッシュ。 NODEを非GC対象化。 論文を書こうとすると新しいことをやらないと、というジレンマ。 「Ricsin: Ruby にCを埋め込むシステム」面白そう。 組み込みRubyは怖すぎる。 TDATAにメモリサイズ取得用関数が登録できるようになったとかで、実際のメモリ使用量を踏まえたGCをするような構想はあるのか、と質問してみた。
λ. “Equality and hashing for (almost) free: Generating implementations from abstraction functions” by Derek Rayside, Zev Benjamin, Rishabh Singh, Joseph P. Near, Aleksandar Milicevic, Daniel Jackson
akrさん(2009-07-18, 2009-07-19)とku-ma-meさんが、巡回構造のhashメソッドの実装法で盛り上がっていたので、そういえばこの論文でも巡回についても取り上げてたなと思って紹介してみた。 が、読んでみたら、equalityは今のRubyと同じような方法で、hashについては巡回がある場合には単純に定数を返しているというオチだった。 しょぼーん。
まあ、それはともかく、この論文は「equalityやhashの実装には落とし穴が色々あるので、手で実装する代わりにクラスに付与したアノテーションから自動生成しよう」という話。 使われているアノテーションは以下の通りで、abstraction function がイテレータを返すメソッドになっているのが、シンプルで面白かった。
Annotation + Description | Example(s) |
@EqualityTypeDefn Declares that this Java type represents an equality type and indicates whether or not its objects' parts are ordered. | @EqualityTypeDefn(Ordering.Total) interface List {...} @EqualityTypeDefn(Ordering.None) interface Set {...} |
@AbstractionFunction Names the method that provides an iterator over the parts of this object. | @AbstractionFunction("iterator") interface Collection {...} |
@ConcreteEquality Indicates that the abstract parts of object x are the objects its fields refer to. | @ConcreteEquality class Point { int x, y; } |
@NotKey Used with @ConcreteEquality to exclude fields from A(x). | @ConcreteEquality class BankAccount { final int id; @NotKey double currentBalance; ... } |
@ReferenceEquality Indicates that the unique identifier for this object should be used for equality, and so no other object can be equal to this one. | @ReferenceEquality interface Iterator {...} |
2010-07-17
λ. CLTT の 1.1 Fibrations の練習問題
CLTT読書会で読んでいる、Categorical Logic and Type Theory だけど、最近全然ちゃんと読めていなかったので、一念発起して復習することに。まずは、1.1 Fibrations の練習問題を解いてみた(解いた時のメモ)。 このメモは Note Taker HD で書いてみた(参考: iPadを紙代わりに使うならNote Taker HD - a geek born in Tomakomai)。