#about iizukak ##現在進行中のプロジェクト
- SICP解答集:「計算機プログラムの構造と解釈 第二版」の問題に挑戦
##リンク集
| (define member* | |
| (lambda (a l) | |
| (cond | |
| ((null? l) #f) | |
| ((atom? (car l)) | |
| (or (eq? (car l) a) | |
| (member* a (cdr l)))) | |
| (else (or (member* a (car l)) | |
| (member* a (cdr l))))))) |
| $ wget http://www.netlab.is.tsukuba.ac.jp/~yokota/archive/Gauche-readline-20100625.tar.gz | |
| $ tar xzf Gauche-readline-20100625.tar.gz | |
| $ cd Gauche-readline-20100625 | |
| $ ./configure | |
| $ make | |
| $ make check | |
| $ sudo make install | |
| $ gosh-rl | |
| WARNING: Quote character setting is not supported by the library. | |
| gosh> |
#about iizukak ##現在進行中のプロジェクト
##リンク集
| (define (finseg n len) | |
| (let loop ((sep (/ (fact len) len)) (i 0) (ans 0)) | |
| (cond ((and (<= i n) (< n (+ i sep))) ans) | |
| (else (loop sep (+ i sep) (+ ans 1) ))))) | |
| ;リストの n 番目の要素を取り除いたリストを返す手続き | |
| (define (pop lst n) | |
| (cond ((= n 0) (cdr lst)) | |
| (else (cons (car lst) (pop (cdr lst) (- n 1)))))) |
| (use srfi-1) | |
| (define (fib n) | |
| (let ((alpha (/ (+ 1 (sqrt 5)) 2) ) | |
| (beta (/ (- 1 (sqrt 5)) 2) )) | |
| (round (- (* (/ 1 (sqrt 5)) (expt alpha n)) | |
| (* (/ 1 (sqrt 5)) (expt beta n)))) )) | |
| (print (map (lambda (n) (fib n)) |
| (define hold (expt 10 999)) | |
| (define (problem025) | |
| (let loop ((a1 1) (a2 1) (n 3)) | |
| (cond ((< hold (+ a1 a2)) n) | |
| (else (loop a2 (+ a1 a2) (+ 1 n)) )))) |
| (define (fib n) | |
| (let ((alpha (/ (+ 1 (sqrt 5)) 2) ) | |
| (beta (/ (- 1 (sqrt 5)) 2) )) | |
| (- (* (/ 1 (sqrt 5)) (expt alpha n)) | |
| (* (/ 1 (sqrt 5)) (expt beta n)))) ) | |
| (define hold (expt 10 999)) | |
| (define (problem025) | |
| (let loop ((mini 1) (maxi 10000)) |
| ;単位分数 (1/d) の循環部の長さを計算し、 | |
| ;(d 長さ) という形式にして返す手続き | |
| (define (findrem n) | |
| (let loop ((rem 10) (ans '(1))) | |
| (cond ((member (modulo rem n) ans) (list n (length ans))) | |
| (else (loop (* 10 (modulo rem n)) (cons (modulo rem n) ans) ))))) | |
| ;((2 1) (3 10)) のような形式の整数のペアからなるリストを受け取り、 | |
| ;(car (cdr hoge))が最大となる要素を見つける手続き | |
| (define (max-list ls) |
| ;エラトステネスのふるいで素数を生成する手続き | |
| ;ソース http://practical-scheme.net/wiliki/wiliki.cgi?Project%20Euler | |
| (define (primes n) | |
| (if (<= n 2) | |
| '() | |
| (let loop ((l (unfold (cut > <> n) values (cut + <> 2) 3)) | |
| (prime-list '(2))) | |
| (let1 m (car l) | |
| (if (> (expt m 2) n) | |
| (append (reverse prime-list) l) |
| ;n x n のうずまき正方形の四隅の整数を足しあわせた数を返す | |
| (define (sum-square n) | |
| (+ (* n n) | |
| (- (* n n) (- n 1)) | |
| (- (* n n) (* 2 (- n 1))) | |
| (- (* n n) (* 3 (- n 1))) )) | |
| ;整数のリストの要素のシグマ | |
| (define (sum-list lst) | |
| (fold + 0 lst)) |