2009-01-01から1ヶ月間の記事一覧
30分プログラム、その518。ダイクスラ法を実装しようとしたら、よくわからないものになった。変な点は、対象とするグラフがDAGのみになっている点と、たぶん計算量が増えてる点。もともと手続き的だったアルゴリズムを、再帰でキレイに書こうして失敗したの…
komamitsuさんのCaml Programming Guideline - komamitsu.log経由で、OCaml/guideline - U-Wiki+を知った。 OCamlのコーディング規約らしいけど、 命令型コードには1行ずつコメントを付ける while ループは普通間違っている。 といったおもしろいことが書い…
30分プログラム、その517。Pythonのパッケージ管理システムのeasy_insatllを試してみよう。 Perlのcpan、Rubyのgem、Pythonのeasy_installらしい。こういうのがあるとライブラリのインストールが楽なんですよね。 検索 わからない。PyPI – the Python Packag…
30分プログラム、その516。16進数のかけ算の表を作ってみよう。 前にどっかで、プログラマだったらF×Fぐらい暗記してるよねー、という話題がでてた気がする。 いんちきプログラマのボクは暗記どころか紙を使って計算しても正解できるかどうか怪しいので、一…
30分プログラム、その515。Erlangでambを作ろうとしたら、いつのまにかmapになっていた。 id:Gemmaさんが、またambを書いていた。ホントに ambって継続を使って、ひとつづつ計算してるけど、全部並列で計算しちゃえばよくね?と思ってErlangで作ってみた。そ…
30分プログラム、その514。対話環境ってとっても便利ですよね。関数の動作を確認するときとか、ちょっと複雑な計算がしたいときとかガンガン使いますよね。でも、対話環境の起動速度って、だいぶ差がある気があるよね。例えば、ghcの対話環境の起動は、だい…
30分プログラム、その513。Haskellでmutableな変数が使えると評判のData.IORefを使ってみた。 で、いざ書き換え可能な変数があるとなると、なかなかいいサンプルが思いつかない。しょうがないので、フィボナッチ数で関数が何回呼び出されるかカウントするや…
30分プログラム、その512。ローマ字をひらがなに変換する関数を書いてみた。 今日、b:id:banjunと"John"を"慈音"に変換できたらおもしろいんじゃね?みたな話をしてたので、とりあえずローマ字をひらがなに変換する関数を作ってみた。Schemeで。 本気でやるん…
Terminal.appで日本語入力中に画面更新があると、日本語が消えちゃうらしい。 はてなブックマーク - Terminal.app を軽くする方法 - IT戦記 http://unknownplace.org/memo/2008/11/05#e001 ボクはEmacsにauto-save-buffersを入れてるので、Emacsで画面更新が…
30分プログラム、その511。Scalaで優先度付きキューを作ってみよう。 wikipedia:優先度つきキューによると、連想リストとキューを組合せるのが一番楽らしいので、それをそのままScalaに落し込んでやる。ちなみに、Scala Standard Library 2.12.8 - scala.col…
30分プログラム、その510。Inlineを使って、Perlの中にPythonを埋め込んでみる。 "port search python"の結果を眺めていたら、"p5-inline: Write Perl subroutines in other programming languages"なるものを見つけた。これを使うと、Perlの中にCやJava、Py…
アドレスブックの同期はしたいけどMobileMeは高いよなぁ、という人はYahoo!を使って同期をすると幸せになると思います。 アドレスブックの設定 アドレスブックを起動します。 "環境設定"から"Yahoo!と同期"を選択する。 Yahoo!のアドレスを入力する。yahoo.c…
30分プログラム、その509。Perlのモダンなオブジェクトシステム、Mooseを試してみた。 銀行口座クラスをとりあえず作ってみたけど、これだけだとあまり利点が感じられない。せいぜいアトリビュートを簡単に定義できるぜい、という程度。 きっとbefore/after/…
30分プログラム、その508。Perlでオブジェクト指向を使うときは、Mooseを使うのがモダンらしい。 それはさっそく試してみねば、と思いきや依存関係がわりと多いらしくて全然インストールが終わらない。実際に試すのはまた明日。 インストール cpan> install …
前回のエントリ: http://d.hatena.ne.jp/mzp/20090102/esdl 30分プログラム、その508。こりずにErlangのSDLバインディング、ESDLを試して、またも失敗した。本当は、サーフェイスのピクセルデータを自分でごにょごにょして加算合成じゃい、αブレンディングじ…
Classクラス Classという名前のクラス。メタクラスもクラスとして提供する場合にこの名前がよく使われる。例として、プログラミング言語 Ruby リファレンスマニュアルが上げられる。 類似のものに、Objectのオブジェクトなどがある。 forループ ごぞんじ制御…
30分プログラム、その508。 インストール Darcsでレポジトリからもってくる。 $ darcs get http://repetae.net/repos/frisby Cabalを使ってインストール。 $ cd frisby/frisby $ runghc Setup.lhs configure $ runghc Setup.lhs build # runghc Setup.lhs in…
前にHello,worldの次って何を書くよ?というネタを書いた(id:mzpp:20090106:snd)けど、昔http://howdyworld.org/habastu/なるものを作ったことを思い出したので、それで作り直してみた。 書くよ派 ├─再帰だよ派 │ ├─階乗だよ派 │ └─フィボナッチ数だよ派 │ └─…
30分プログラム、その507。 へー、PEGってのがあるのか。おもしろそうだなー オリジナルはHaskellのfrisbyなのか。とりあえずそれを使ってみよう アーカイブがないじゃないか!しょうがない、Darcsのレポジトリからとってくるか Darcsのインストール(←いまこ…
30分プログラム、その506。 「バブルソートってどう書くのー」って聞かれて、こう書くんだよーっとさらさらっと書いてやろうとしたら、普通に解らなかったので非常にあせった。 そういえば、クイックソートとかマージソートはたまに書くけど、バブルソートは…
30分プログラム、その505。ひさしぶりなので、簡単なやつからゆっくりと。 先延ばしにしてきた年金をそろそろ払わないといけないけど、MacBookAirを買ってしまってお金がない! というわけで貧乏人のオブジェクトこと、クロージャで銀行口座オブジェクトを作…
30分プログラム、その504。今日、ミーティングで遅延リストの話をしたので、遅延リストを使ってフィボナッチ数を書いてみる。 最初、 improt itertools def ones(): return itertools.chain([1],ones()) とやったら、えらい目にあってしまった。 しょうがな…
Hello,Worldの次に書くプログラムといえば、 フィボナッチ数 階乗 エラトステネスのふるい あたりが普通ですよね? ラノベ(asin:408630421X)も、エラトステネスのふるいから始まってたし。ボクは階乗を書くことが多いです。
F# at Microsoft Research - Microsoft ResearchについてきたTutorial.fsを読みながら、F#とOCamlの違いついてメモしてみます。 拡張子が.fs OCamlは.mlだけど、F#は.fs。 コメントが// OCamlのコメントは(* ... *)だけど、F#は//。 範囲 let oneToTen = [1.…
30分プログラム、その503。OCamlに似てるけど、互換性はそれほどないと評判のF#を触ってみた。 ちょっとしか触っていないけど、内包表記があったり、小粋な演算子(|>とかC#を使っているけれど、これをF#に置き換えれたら、かなり幸せになれる気がする。 ただ…
30分プログラム、その502。最近、Whitespaceとかbrainfuckとかの難読言語が流行っているらしいので、ボクもWhitespaceを実装してみようと思う。というわけで、まずはスタックを実装してみた。wikipedia:Whitespaceに載っていた5つのスタック操作は実装してみ…
30分プログラム、その501。ErlangのSDLバインディング、ESDLを試したけど、うまくいかなかった。 画像をロードして表示するだけのはずなのに、まっしろなウインドウが表示されるだけ。なんとなく、MacPortsで入れたSDLが悪いんじゃないかという気がしてる。…
↑干支のつもり。みなさま、あけましておめでとうございます。今年もよろしくお願いします。今年は就職先を決めないといけない年なので、ステキな会社があったら教えてください。とりあえず、コードを書ける会社がいいです。