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

16x16でお手軽ロゴ制作

はてラボの16x16というサービスでロゴを作ってみた。さっそくブログのアイコンに使っています。Pの存在感のなさといったらもう。LSIのページじゃないよ!

迷路を解くアルゴリズム(改)

前回の迷路を解くアルゴリズムがほとんどCみたいで気にくわなかったので、より Common Lisp らしくなるよう書き換えてみた。 前と違って迷路内の点をそのまま (i j) という座標リストで表している。ユーティリティの裏に隠してあるので、意識する必要はない…

迷路を解くアルゴリズム

Common Lisp で書いてみた。 人材獲得作戦・4 試験問題ほか(http://okajima.air-nifty.com/b/2010/01/post-abc6.html) でもメモリ確保が簡単にできるということ以外は、ほとんどCで書くのと同じに……。 まず file-to-matrix でファイルから文字を読み取り…

ヒープによる優先度付きキュー(priority queue)

ちょっと思うところあって、優先度付きキューをヒープで書いてみた。ただし実体はクロージャ。引数なしで呼ぶとデキュー、引数を受け取るとエンキューするという単純なもの。 キューを作るためには、初期要素となる配列(未整列で良い)と順序関数を与える。…

ビット単位の入出力マクロ

ファイルの圧縮や展開をするときなど、ビットごとの入出力をしたいことは多い。そのためのマクロ。 with-gensyms は超有名ユーティリティ。 do-bits は do-list などと同じ使い方をする。変数名と入力用ストリーム(byte 系)を受け取って、ビットを順に変数…

リストで挿入ソート

リストって挿入に強いよな、と思って挿入ソートを書いてみた。速度重視で破壊的(rplacd とか久々に使ったよ)なのに再帰を使っているという矛盾。一応、リストの長さが10ぐらいまでなら組み込み関数の sort に勝っていた。100でやったらもちろん余裕で負け…