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

問題集

http://www.agusa.i.is.nagoya-u.ac.jp/person/mzp/hiki/?exerciseで30分程度で解ける問題を集めています。たくさん集めておけば、新しい言語を勉強するときに役に立つでしょう、ってid:zyxwvが言ってました。

Hikiハック

30分プログラム、その53。Hikiをちょっとだけ改造しよう。内輪Wikiで、TODO管理をしていたら、誰かから『sageでやれ』と怒られた。いい機会なので、sageでやりやすいように改造しよう。 sage自体は「タイムスタンプを更新する」チェックボックスをはずせばい…

俺letとaif

一回休んだけれど、30分プログラム、その52。Schemeで俺letとaifを定義してみよう。 define-syntax系の健全なマクロでは無理だったので、define-macroの伝統的なマクロで実現した。 伝統的なマクロだと、Common Lispとまったく一緒やね。俺letはとくに説明が…

読書履歴

最近、本を読んだら必ずmixiでレビューを書くようにしている。 マンガやら小説も混じってくるし、あまり勧められない本もあるからここで書くのはちょっと・・・、と思ったからなんだけど、意外とおもしろい。 日記で書いているとどんな本を読んだかが、他の…

MCXI文字列(ACM)

30分プログラム、その51。id:zyxwvのマネをして、ACMの問題を解いてみよう。http://www.acm-japan.org/past-icpc/domestic2005/C/C_ja.html大事なところだけ、引用すると 文字 "m","c","x","i" は,それぞれ 1000,100,10,1 を表し, 数字 "2",...,"9"…

はてぶのプライベート率

30分プログラム、その50。「信用して下さい」系メディアと「検証して下さい」系メディア - アンカテのように、はてブのプライベート率を調べてみよう。 $ python private.py http://www.100shiki.com/archives/2007/06/ipmyipneighbors.html URL: http://www…

Perlで継続

30分プログラム、その49。404 Blog Not Found:perl - to goto or not to goto, that's the continuationによるとPerlでも"本当の継続"が使えるらしいので、試してみる。この記事は、 CPSを使えば、Perlでも継続が使えるよ でも、単純にCPSで書くと遅いよ ど…

日本酒

冷蔵庫で冷やした日本酒を、ちびちび飲みながらプログラミング。 おいしい。

マクロ(2)

30分プログラム、その48。マクロを定義できるようになろう、シリーズ。 Scheme 入門 15. 構文の定義を参考に、when/unless/andを定義してみる。 (define-syntax mac (syntax-rules() ((_ var) (print (macroexpand-1 'var))))) (define-syntax my-when (synt…

とあるプログラマの変遷

level1 ループ最高!ループほど明確なものはないだろう。 int fact(int n){ int result = 1; for(int i = 1 ; i <= n ; i++){ result *= i; } return result; } level2 再帰関数最高!!ループなんて必要ないだろう。 fact 0 = 1 fact n = n * fact (n-1) level…

ぼかし

30分プログラム、その47。普通のぼかし(blur)。普通じゃないぼかしは、ガウスぼかしとか。教材は、フルスクラッチによるグラフィックスプログラミング入門。 require "sdl" def map_surface!(surface,&f) surface.lock (0...surface.h).each do|y| (0...surf…

正規表現

30分プログラム、その46。Pythonで正規表現を使ってみよう。今回、作ったのは正規表現でパスのディレクトリ部分、ファイル名の部分、拡張子の部分を取り出すプログラム。 $ python regexp.py ~/foo.txt direname: /Users/mzp basename: foo.txt ext: txtimpo…

foldrとfoldl

30分プログラム、その45。foldlとfoldrのPerlによる実装。foldlとfoldr自体はもう何度も自分で書いているので、Perlで再帰関数の書き方を覚える意味合いが強い。 use strict; use warnings; sub fact($){ my ($i) = @_; if($i == 0){ 1; }else{ $i * &fact($…

ハフマン木

ハフマン木を作りたいので勉強中。LHAとZIP―圧縮アルゴリズム×プログラミング入門をもう一度、読もう。関数言語っぽいアレンジはあとですることにして、とりあえず本の内容をまとめる。 ハフマン符号器 バッファ中のデータの頻度をカウントする(FrequencyTab…

マクロ(1)

30分プログラム、その44。Schemeでマクロを書いてみよう。書き方を調べるのに時間がかかったので、内容そのものはしょぼい。 (set! val '())の略記であるnil!と、数字用のifことnif。nifは条件部が正かゼロか負によって実行する節を変えるちょっとかわったif…