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

リングに入っているのに、そういえば…

rubyのこともubuntuのことも書いてないかも。

(sicp16+)やっぱりもう1問した。

improver -> intervalに直した。 ;;m2.41 ;n>=k>j>iで総和がs ;今回は教科書に沿って,flatmapを使ってみよう ; ;;;;;;;;必要なもの(教科書);;;;;;;;;;;;;;;; (define (flatmap proc seq) (accumulate append '() (map proc seq))) (define (accumulate op in…

(sicp16)m2.40

今日はこれだけ enumerate-intervalがenumerate-improverになってる ;;m2.40 (define (enumerate-improver low high) (if (> low high) '() (cons low (enumerate-improver (+ low 1) high)))) (define (unique-pairs n) (define (iter result count) (if (=…

(sicp15)2章から復習。

一度やったことがあると、すぐに解けるみたい。 1日で今までやっていたところまでいけた。(めんどくさそうな問題は除いて) same-parityの解き方は大部変わった。 ;;久しぶりなので、もう一度2章の始めの方からやってみる。 ;;m2.4 (define (_cons x y) (la…

そろそろ再開したいので、すこし復習してみた

リスト操作 (define (accumulate op init seq) (if (null? seq) init (op (car seq) (accumulate op init (cdr seq))))) (define (enumerate-improver low high) (if (> low high) '() (cons low (enumerate-improver (+ low 1) high)))) ; gosh> (accumulat…

lambda-procの使いどころ

関数内関数の代わりにlambdaとか使っちゃダメかもしれない。 (前回作ったmapperのところも関数にした方が早いかも。) def sum1 n (n == 0)? 0 :n + (sum1(n-1)) end def sum2 n sum_iter = proc do |c,r| (c == 0)? r : sum_iter[(c-1),(r+c)] end sum_ite…

PubMedのシンプソン数

おとなり日記からのぞいてみた記事*1に触発されて作ってみました。 (PubMedもシンプソン数も何に使うのかよくわかってないです。><) 追記 map_countの定義のところで無駄がありました>< lambda/procを関数内関数のように使うと遅くなる それ以前に、ma…

sicp(14)m2.37〜m2.39

;;復習 accumulateとaccumulate-nを作る。 (define (accumulate op init seq) (if (null? seq) init (op (car seq) (accumulate op init (cdr seq))))) (define (accumulate-n op init seq) (if (null? (car seq)) '() (cons (accumulate op init (map car s…

sicp(13)m2,35〜m2.37

;;復習 ;;15分ぐらいでaccumulate(list),filter, acc-map, acc-length, ;;fringe, enumerate-intervalを作ろうとした。 ;;30分以上かかった。 (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op in…

sicpばかりしてたら、rubyのコードが書きたくなった。

「def esub! args new_syms」と書いたときのエラーに素で驚いた。 今回書いたコード 引数をとって一気にgsub!。*1 class String def esub! args, new_syms = nil if new_syms.nil? #argsがハッシュのとき regexps = args.keys.map {|e| Regexp.new e} new_sy…

sicp(12)m2.28

(実際にupしたのは6日です) やっと解けた。 cdrでリストを下っていくものの応用でできた。 (2つの関数どうしが互いに呼ばれ合うようなものの作り方に悩んでいたのかもしれない) ;;復習。 ;;reverse と deep-reverse を作る。 (define (reverse lst) (define…

sicp(11)m2.25〜m2.27

2.28は解けませんでした><(明日やる) ;;復習。 (define (map lst f) (if (null? (cdr lst)) (cons (f (car lst)) '()) (cons (f (car lst)) (map (cdr lst) f)))) (define (square-list lst) (map lst (lambda (x) (* x x)))) ;;あー、わざわざnull?の部…

sicp(10)m2.21〜2.24

(更新したのは、3日です) ;;練習 (define one (lambda (f) (lambda (x) (f x)))) (define (inc x) (+ x 1)) (define two (lambda (f) (lambda (x) (f (f x))))) (define add (lambda (f1 f2) (lambda (g) (lambda (x) ((f2 g)((f1 g) x)))))) (define (re…