Life Goes On

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

夏休み

海に行ってきた。もう十分休んだだろう。そろそろ動き出さないと。

252

1年以上かかって、ようやく、252問完答。 最後に残った問題は、Problem 198、Problem 241、Problem 252 でした。どれも手強かった。 Problem 198:やっぱり最難問題。Stern–Brocot tree を使おうと思ったけど、速い実装が書けなかったり、微妙な勘違いがあっ…

日食

リストの正格評価

ひさしぶりに Project Euler を解いて、学んだことをつらつらと。 要約すると、リストの正格評価の仕方を覚えたよ、という話です。 動的計画法を使う部分和問題で、もともとのコードはこんな感じ。リストにメモ化して、foldl で 250250 段の再帰処理をすると…

ナップサック問題

のためのテンプレ。 type Weight = Int type Value = Int table :: [(Weight, Value)] -> [Value] table is = foldl nextLine (repeat 0) is where nextLine ps (wi,pi) = 0 : map memoCell [1..] where -- for 0-1 knapsack problem memoCell w = if w

S コンビネータ = ap

よく考えたら、lambdabot パッケージを全部入れなくても、pointfree パッケージだけ入れればいいので、andLinux まで入れる必要はなかったのでした。 それはさておき、何をしたかったのかというと、S コンビネータがどういう風に表現されるのか知りたかった…

andLinux 体験

というわけで、andLinuxをインストールしてみました。インストール自体はインストーラ一発なのでラクチン。面倒なので設定も全部デフォルト。 インストールするときにユーザとパスワードを登録するのですが、root ユーザのパスワードを登録しません。 root …

Windows PC(ノート)で簡単に使える Linux は?

僕はへたれプログラマなので、ふだんは Windows 使ってます。 特にそれで不自由を感じたことは無かったのですが、この間、Haskell の lambdabot パッケージ(自動で pointfree スタイルに変換してくれるやつ)を入れようとしたら、依存してる unix パッケー…

指定日以前の最新値を取り出す

SQL

sqlである日以前の最新の時の値を取り出す - imHo を見て、書いてみました。 mokehehe さんのとは逆に、日付→残高→口座の順に取得するイメージ。 Oracle だと date は予約語なので名前を変えたり、↓の本の影響で id → account_id としたりしてます。 結合す…

Gtk2Hs(Carino)でお絵描き

ユーザインタフェースってどうも苦手で、Java でも Swing とか使ったことないのですが、お絵かきに挑戦してみました。 Haskell で GUI を作るには、wxHaskell とか Gtk2Hs とかあるらしい。とりあえずサンプルが簡単に見つかった Gtk2Hs を選択。↓からダウン…

Haskell の乗算は FFT らしい

Haskell の乗算は高速フーリエ変換を使ってると聞きました。 軽く確かめてみたら、だいたい O(n * log n) なので、多分そうなんだと思います。 でも、それを明示したドキュメントを見つけられず‥。 それにしても、よく作りこまれてるなぁ。 Prelude> signum …

ぷち・ぷろぐらむ

JAVA5.0でGO!! | プログラミングに自信があるやつこい!! 10分でコーディング | プログラミングに自信があるやつこい!! via なんかしらんけど配る - * *scrap* こういうのを Haskell で書くのはヒキョウだと思いつつ、書いてみたい誘惑に勝てません…

Scala は関数型言語ではない

http://enfranchisedmind.com/blog/posts/scala-not-functional/ via http://d.hatena.ne.jp/camlspotter/20090515/1242349686最近、気になっている話題だったので、頑張って読んでみました。 ちょっと煽り気味の文章だし、明らかな間違い(カリー化の話)と…

フィボナッチ数の計算時間を考える

諸般の事情により、相変わらずフィボナッチ数と格闘中です。何人かの方が既に書かれていますが、フィボナッチ数を高速に計算する方法があります。 細かいバリエーションはありますが、以下のような漸化式を利用します。 F2n-1 = Fn-12 + Fn2 F2n = 2Fn-1Fn +…

8800形

連休の総決算。乗った。

ルービックキューブ

連休中、手持無沙汰になることが多かったので、練習してみた。 6面揃えられるようになった。

リスト処理

関数型言語のいいところは、何といっても高階関数と遅延評価だと思うのです。 というわけで、Scala の高階関数(リスト処理)を見てみました。 まずぱっと思ったのが、zipWith と scanLeft が欲しいということ。 zip → map とするよりは zipWith 一発で書き…

Scala の for 構文はただのリスト内包表記じゃないよ

Scala の for 構文(とりあえずこう呼びます)がただのリスト内包表記なら、いちいちモナドとか言わない方がいいんじゃない?とかいうことを昨日書いたのですが、for 構文は Seq 型だけじゃなくて Option 型とか他の「モナドっぽい」型にも使えるよ、という…

Scala の for-comprehension はモナドなの?

JJUG のカンファレンスで、Scala の for は実はモナドで‥‥みたいなことを聞いたので、具体的にどういうことなのか調べてみました。 for-comprehension (for 内包表記?) は↓みたいな構文です。 scala> for (x <- 0 to 5; y <- 0 to 5 if (x+y)%3==0) yield x…

Lazy K 入門

何となく触ってみました。以下に体験記を。 Lazy K の入力はチャーチ数のリストとして与えられます。出力もチャーチ数のリストとして構成。Haskell の interact が最初から備わっているような感じ。 なので、入力をそのまま出力する echo サーバは以下のよう…

モナドのすべて

All About Monads まだ第 I 部しか読んでいませんが、すごく、分かりやすいです。

都電荒川線8800形

今日から都電で新型車両が運行されます。という訳で出発式に行ってきました。 お目当てのおもちゃ付きボールペン(↓ボールペン付きおもちゃ?)はゲットしたものの、あまりに人が多く、乗車はできず‥‥。子どもと二人でふてくされてました。早期のリベンジが…

残り10問

ようやく残り10問に。 全問完答もできるんじゃないかという気がしてきた。 もう1年以上やってるもんな。 解くのに時間のかかった問題を並べてみると Problem 156 : ただの分割統治法 Problem 186 : ただのグリーディーアルゴリズム Problem 201 : ただ…

Scala を知る

今まで「Scala って Java と Haskell の中途半端なコピーでしょ」って思いこんでいたのだけど、JJUGのカンファレンス で修正されました。 Scala って Java よりずっと純粋なオブジェクト指向言語だったんだ! +がメソッド(5.+(7)とか書ける)ってカコイイ…

SKS = I

なんで SKK = I なんだっけと考えていて、SKKx = Kx(Kx) = x で (Kx) は無視されるから、二つ目の K は他のコンビネータ(例えば S)でもいいよなと思ったわけです。 s x y z = x z (y z) k x y = x というように、Haskellで定義して実行すると、上手くいき…

SQL で素数(解決)

SQL

一昨日の件、youz さんに教えていただきました。ありがとうございます。 素数 - * *scrap* なるほど、外部結合する前に絞り込みたいんだったら、ON 句に絞り込み条件を書かなきゃ駄目、ってことですね。絞込み条件なら WHERE 句だろ、って思い込んでました。…

SQL で素数

SQL

素数を求める SQL というのがあります。 SQLで数学パズルを解く(数論編-問題) 念のため再掲すると、↓のように EXISTS を使います。 SELECT N1.num FROM Numbers N1 WHERE NOT EXISTS ( SELECT * FROM Numbers N2 WHERE N2.num > 1 AND N2.num <= N1.num/2 …

週末の買い物

Tシャツは、既に持っている成田エクスプレスのやつが、毎日のように着てくたくたになっているので、見つけた瞬間に迷わず購入。さっそく今日から着ると言って聞かなかったので、判断は間違っていなかったと思う。(でも半袖はさすがにまだ寒いよ) 父子とも…

カリー化ふたたび

以前に書いたセミナーの振り返り(カリー化、部分適用、その他の話題 - Life Goes On)について、通勤電車でつらつら考えていて、小さいラムダ式と大きいラムダ式を区別するには、モナドなし/あり2つの Arrow を使えばいいんじゃないかと思いました。 つま…

アルゴリズムデザイン

アルゴリズムデザイン作者: Jon Kleinberg,Eva Tardos,浅野孝夫,浅野泰仁,小野孝男,平田富夫出版社/メーカー: 共立出版発売日: 2008/07/10メディア: 単行本購入: 10人 クリック: 421回この商品を含むブログ (51件) を見る会社の勉強会のテキスト。 第 4 章 …