2008-12-04から1日間の記事一覧

gaucheで可変引数で計算量の少ない=を作る

gaucheで可変引数で計算量の少ない=を作る (print (call/cc (lambda (cc) (fold (lambda (x y) (if (eq? x y) x (cc #f))) (begin (write 1) 7) (list (begin (write 2) 7) (begin (write 3) 7)))))) ;=>1237 (print (call/cc (lambda (cc) (fold (lambda (x…

gaucheで可変引数をとる

schemeの可変引数やってなかった。 関数 (define (inc . x) (print x) (print (map (cut + <> 1) x))) (inc 1 2 3 4) ;=>(1 2 3 4) ;=>(2 3 4 5) lambda lambdaの時どうやるんだろう? ((lambda x (print x)) 1 2 3) ;=>(1 2 3)なるほど。単に()を外せばいい…

ubuntuにて日本語pdfを読めるようにする

文字化けが生じることがあったので今回はhttp://www.unixuser.org/~euske/doc/r5rs-ja/r5rs-ja.pdfが読めなかった(涙 日本語PDFの場合必要なパッケージのインストールsudo apt-get install evince ghostscript cmap-adobe-japan1 xpdf-japanesegs-cjk-resou…

Gaucheで魔方陣に挑戦その2

prologの魔方陣の計算速度は総当たり時間なのが分かったのでschemeでもやってみようと思った。 $ time gosh a.scm (2 7 6 9 5 1 4 3 8)15 (2 9 4 7 5 3 6 1 8)15 (4 3 8 9 5 1 2 7 6)15 (4 9 2 3 5 7 8 1 6)15 (6 1 8 7 5 3 2 9 4)15 (6 7 2 1 5 9 8 3 4)15 …