Skip to content

Instantly share code, notes, and snippets.

View iizukak's full-sized avatar
🙆‍♂️

Kentaro Iizuka iizukak

🙆‍♂️
View GitHub Profile
@iizukak
iizukak / member*.scm
Created August 18, 2012 11:55
Scheme手習いメモ (5章 - *すごい*星がいっぱいだ) ref: http://qiita.com/items/d2fa7ecd529709c38211
(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)))))))
@iizukak
iizukak / gauche-readline-install-log.dat
Created August 24, 2012 10:14
Readline module for Gauche インストールログ ref: http://qiita.com/items/46d2fd0679da9dca296b
$ 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>
@iizukak
iizukak / readme.mkd
Last active October 9, 2015 07:37
About iizukak
@iizukak
iizukak / problem024.scm
Created September 7, 2012 15:24
Project Euler Problem 024, Scheme Solution
(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))))))
@iizukak
iizukak / fib.scm
Created September 10, 2012 15:46
Fibonacci number with Scheme
(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))
@iizukak
iizukak / 025.scm
Created September 11, 2012 02:15
Project Euler 025 with Scheme
(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)) ))))
@iizukak
iizukak / 025.scm
Created September 11, 2012 02:16
Project Euler 025 BROKEN
(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))
@iizukak
iizukak / 025.scm
Created September 11, 2012 14:12
Project Euler Problem 025
;単位分数 (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)
@iizukak
iizukak / problem027.scm
Created September 12, 2012 13:19
Project Euler Problem 027 with Scheme
;エラトステネスのふるいで素数を生成する手続き
;ソース 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)
@iizukak
iizukak / problem028.scm
Created September 13, 2012 16:09
Project Euler #028
;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))