2007-11-21から1日間の記事一覧

GaucheでUNIQ

一つずらしたリストとzipして同じ要素のタプルを削除するフィルターを通す版 更に追記。zipつかうとちょっとだけ富豪な気分 srfi-1のzipは少ない方で作るので (cons () x)がちょっとだけかっこわるい。 >> (define uniq (lambda (x) (unzip1 (filter (lambda…

Gaucheでクイックソート

リストから任意のものを抜き出すのはrubyだとselectだからと思って探してみると srfi-1のfilterがそうだった。 >> (define qsort (lambda (x) (if (null? x) () (append (qsort (filter (lambda (y) (< y (car x))) (cdr x))) (list (car x)) (qsort (filter…

Gaucheで可変長の引数を扱う。

なるほどな。dorリストつかうのか。 >> ((lambda (x . y) (print x y)) 1) 1() => #<undef> >> ((lambda (x . y) (print x y)) 1 2) 1(2) => #<undef> >> ((lambda (x . y) (print x y)) 1 2 3) 1(2 3) => #<undef> >> ((lambda (x . y) (if (null? y) "only x" "x and y")) 1) =></undef></undef></undef>…

(続々)Gaucheで「カブらない数字を4桁だすの」をやる*1

http://d.hatena.ne.jp/n9d/20071120/1195568232で、shiroさんに教えて頂いたのでもう少しやってみる。 gauche.sequenceを使う方法 >> (begin (use srfi-1) (use gauche.sequence) (take (shuffle (iota 10)) 4)) => (8 9 5 0) append-mapを使う方法 やばい…