Life Goes On

まあまあだけど楽しんでる方です

人月の神話

人月の神話―狼人間を撃つ銀の弾はない (Professional computing series (別巻3))作者: Jr.,フレデリック・P.ブルックス,Frederick Phillips,Jr. Brooks,滝沢徹,富沢昇,牧野祐子出版社/メーカー: ピアソンエデュケーション発売日: 2002/11メディア: 単行本購…

今日のコード

// もともとのコード sql.append("SELECT * FROM A WHERE "); // 障害-XXXX対応 以下3行追加 if (hogehoge) { sql.append("0 = 1 "); } :ある条件のときだけ、検索結果を0件にしたかったようです。 まさにパッチと呼ぶに相応しい、最低な継ぎ接ぎコード。 …

チャーチ数であそぼ

チャーチ数の演算をコンビネータで表すと (^) はλabcd.bacd = λab.ba = CI(引数の順序を気にしないなら I ) (*) はλabcd.a(bc)d = λabc.a(bc) = B (+) はλabcd.ac(bcd) = λabcd.B(ac)(bc)d = λabc.(BBac)(bc) = λabc.S(BBa)bc = λa.BS(BB)a = BS(BB) (+) …

今日の教訓

よくあるクイックソートのプログラムを List モジュールの sort 関数(マージソート)と比べてみました。 import Data.Ratio quickSort :: Ord a => [a] -> [a] quickSort [] = [] quickSort (l:ls) = quickSort (filter (< l) ls) ++ [l] ++ quickSort (fil…

The Implementation of Functional Programming Language

会社に落ちてたので、有難く頂戴いたしました。 ラムダ計算とかパターンマッチとか多相型チェックとか SK コンビネータとか遅延評価とか、どっかで見たような話題が並んでるなと思ったら、作者の Simon Peyton Jones って Haskell 界の大御所でした。 うわぁ…

グッドスタイン数列

最近、計算可能性とか不完全性定理とかについて勉強しています。その中でグッドスタイン数列というのが出てきて、これを Haskell で書いてみようと思いました。 遺伝的記述をリストで表現しようとしていて、値と遺伝的記述を変換する関数を書きたいのですが…

関数適用と関数合成

以前に出られなかった勉強会の資料を見てたら、flip id は flip ($) と同じと書いてありました。たしかに id :: a -> a で ($) :: (a -> b) -> (a -> b) だから、id の a を関数 a -> b と見れば、同じだ。 ということは main = print $ (+3) $ (*2) $ 1 こ…

あなごるでv

仕事が落ち着いたので、前から気になっていたあなごるのvの code を読んでみました。 基本は↓の関数を作ること。 f x = if succ x == w then out x else f (succ x) 名前はつけられないので↓みたいにして、引数 x に関数を渡す。 f x y = if succ y == w the…

MS Accessの最適化のナゾ

SQL

以前、ちょっと遅くて困っていたSQLがありました。 元はこれ。 -- Ver. 1 select id, max(time) from ( select id, time, (select count(*) from log where id = t1.id and time < t1.time) as count, (select count(*) from log where id = t1.id group by …

utf8-string のインストール

utf8-string モジュールをインストールしました。 物は HackageDB: utf8-string-0.3.1.1 で入手。 インストールの仕方がどこかに載ってたなと探し回って どう書く?org 3513 nobsun - 投稿の詳細 で発見。 $ runhaskell Setup.lhs configure $ runhaskell Se…

インタプリタ

そもそもなぜ utf8-string モジュールを入れたかというと、こんなの が出てきたからです。 すごい、Hello, world! も v も動いてる!しかも 100 行で書けるんだ。 IO 周りがよく分かっていないので勉強して、自分でも書けるようになりたい。 しばらくは勉強…

再帰の続き

相変わらずハマってます。もともとやりたかったことはコレ。(何をしたいのかバレバレですが) \ f x -> if succ x == 'w' then x else f (succ x)ただこれだと f (succ x) を評価しようとして無限ループに陥ってしまうので、書き換える。 でもやっぱり無限…

Yコンビネータで再帰

せっかくGrassが盛り上がってるので、少しでもついていこうと、Yコンビネータを使った再帰に挑戦してます。エラーが出なくなったと思ったら無限ループ! 色々調べてたら irie @ ウィキ - grass.el に例が載ってました。 階乗の関数を返す関数gは、一般的な…

GPCC

今年のGPCCでは、去年に引き続いてブロックスデュオをやるみたいです。(いちおう以前から聞いていたんだけど) 去年はどきどきしながらの初参加で、3勝3敗という自慢にもネタにもならない成績だったので、今年はもう少しいいところを見せたい。 あと1か…

ゲド戦記

ゲド戦記 4 帰還 (ソフトカバー版)作者: アーシュラ・K.ル・グウィン,Ursula K. Le Guin,清水真砂子出版社/メーカー: 岩波書店発売日: 2006/05/11メディア: 単行本(ソフトカバー) クリック: 7回この商品を含むブログ (45件) を見る最近、通勤電車の中で読…

104問目

http://projecteuler.net/index.php?section=problems&id=104 最初の 9 桁にも最後の 9 桁にも 1 から 9 の数字が 1 回ずつ現れるようなフィボナッチ数で、最小のものを求める。 最初の 9 桁と最後の 9 桁だけ抜き出して計算しています。ただし最初の 9 桁を…

103問目

http://projecteuler.net/index.php?section=problems&id=103 大きさ n の集合 A の要素の和を S(A) とおく。空でなく共通の要素を持たない2つの部分集合 B, C が、以下の性質を持つような集合を特別な集合と呼ぶ。 S(B) ≠ S(C); つまり、部分集合の和は等…

105問目

http://projecteuler.net/index.php?section=problems&id=105 103問目の関連問題。 大きさ n の集合 A の要素の和を S(A) とおく。空でなく共通の要素を持たない2つの部分集合 B, C が、以下の性質を持つような集合を特別な集合と呼ぶ。 S(B) ≠ S(C); つ…

106問目

http://projecteuler.net/index.php?section=problems&id=106 103問目の関連問題。 大きさ n の集合 A の要素の和を S(A) とおく。空でなく共通の要素を持たない2つの部分集合 B, C が、以下の性質を持つような集合を特別な集合と呼ぶ。 S(B) ≠ S(C); つ…

勉強会

出席の連絡を忘れていた。帰ったらする。

102問目

http://projecteuler.net/index.php?section=problems&id=102 与えられた三角形の中で原点を含むものの数を求める。 ∠AOB, ∠BOC, ∠COA の外積を取って、全て正/全て負ならABCは原点を中心に反時計回り/時計回りに並んでいることになるので、原点を含むと分…

Hello, world!

Hello, world! ができました。613B!やた! wvwwWWwWWWwvWwwwwWWwWWWwWWWWwWWWWWwWWWWWWwWWWWWWWwWwwwwwwwwwwwwWWWWwWWWWWWWwWWWW WWWWWWWWWWwWWWWWWWWWWWwwWWWWWWWWWWwwWWWWWWWWWWWWwWWWWWWWWWWwwWWWWWWWWWWwwwwwwWWW WWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWwW…

ghc-6.8.3

インストールしました。OS は RedHat Enterprise Linux ES 4 。 tarball を持ってきて、./configure, make, make install しただけ。 6.8.2 のときもそうだったのですが、Data.Map をインポートしたコードをコンパイルしようとすると、↓のエラーが出て、コン…

はじめてのGrass

id:nishiohirokazu さんの 草植えてみましたwWWwwww 経由で Grass を知って、ちょっと触ってみました。 (はじめての C がはじめてのアレなら、はじめての Grass は「吸って」みましたと言うべき?) インタプリタは ちょっと草植えときますね型言語 …

101問目

http://projecteuler.net/index.php?section=problems&id=101 一般項が n 次の多項式となる数列を、より低次の多項式で近似するとき、最初に不一致となる項を求め、その和を答える。 部分数列から次の項を推定して、その和を求めています。そのとき、階差数…

再開

ちょうど100問になったし、夏休みも兼ねて、これからどうするか考えていたのですが、そもそも Project Euler 以外にネタが何も無いことに気づきました。正直どうかと思う。 という訳で、ぼちぼち再開します。

100問目

http://projecteuler.net/index.php?section=problems&id=100 青いディスク 15 枚、赤いディスク 6 枚、計 21 枚のディスクの中から 2 枚のディスクを無作為に取り出すとき、青いディスクを 2 枚取り出す確率は P(BB) = (15/21)(14/20) = 1/2 となる。 青い…

99問目

http://projecteuler.net/index.php?section=problems&id=99 与えられた底と指数の組の中で一番大きいものはどれか求める。 cut-sea さんがSコンビネータについて書いてるのを見ながら色々試してて、flip f g と f . g id が等価だということが分かりました…

カレンダー

勉強会の内容を受けて、以前に書いた19問目のコードを書き直してみました。 算術演算は使わず、カレンダー情報を1次元のリストに格納しています。 西暦 0 年から始めて 1900 年まで読み飛ばすとか、けっこう無駄なことをしていますが、所詮 O(n) なので、…

98問目

CARE という単語の各文字を 1, 2, 9, 6 の各数字で置換すると 1296 = 362 という平方数になる。文字の順番を入れ替えた RACE という単語も 9216 = 962 で平方数になる。与えられた単語の中からこのような単語の組を全て見つけ出し、平方数の最大値を求める。…