Skip to content

Instantly share code, notes, and snippets.

@omegatakuma
omegatakuma / prime.scm
Created August 28, 2012 16:25
エラトステネスの篩
(define (prime n)
(let loop ((lst (iota (- n 1) 2))(result '()))
(let ((solve (cons (car lst) result)))
(if (< (last lst) (* (car solve) (car solve)))
(append (reverse result) lst)
(loop (remove (^(x)(zero? (remainder x (car lst)))) lst) solve)))))
;(time (sieve 10000))
; real 0.055
; user 0.060
; sys 0.000
;(time (piota 10000))
; real 0.009
; user 0.010
; sys 0.000
@omegatakuma
omegatakuma / fizzbuzz.scm
Created August 9, 2012 00:34
周期性を利用したFizzBuzz
(define fizzbuzz '(1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 Fizzbuzz))
(define (solve n)
(let loop ((num 1)(lst fizzbuzz)(m 1))
(cond
((null? lst)
(loop num (map (lambda(x)(if (number? x)(+ x (* 15 m)) x)) fizzbuzz) (+ m 1)))
((>= n num)
(print (car lst))
(loop (+ num 1) (cdr lst) m)))))
@omegatakuma
omegatakuma / caesar.scm
Created August 6, 2012 15:51
[Gauche]シーザー暗号
(define base (string->list "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
(define base2 (string->list "abcdefghijklmnopqrstuvwxyz"))
(define (caesar lst n)
(let ((solve (append (drop base n) (take base n)))
(solve2 (append (drop base2 n) (take base2 n))))
(let loop ((lst lst)
(n 0)
(result '()))
(cond
@omegatakuma
omegatakuma / invfizzbuzz.scm
Created July 27, 2012 15:56
逆FizzBuzz in Scheme
(use srfi-42)
(define strl '(fizz buzz fizz fizz buzz fizz fizzbuzz))
(define intl '(3 5 6 9 10 12 15))
(define (min-list lst)
(let loop ((ls (map (lambda(x)(length x)) lst))
(n 0))
(if (eq? (car ls) (apply min ls))
n
@omegatakuma
omegatakuma / prime.scm
Created June 23, 2012 05:48
[Gauche]内包表記で100以下の素数を求める
(filter (lambda(x)x)(list-ec (: m 1 (+ 100 1))(and(equal? (filter (lambda(x)x) (list-ec (: x 1 (+ m 1))(and (= (mod m x) 0) x))) (list 1 m))m)))
@omegatakuma
omegatakuma / position-lst.scm
Created June 9, 2012 13:40
position-lst.scm
(define (position key lst)
(let loop ((lst lst)(n 0)(result '()))
(cond
((null? lst) (reverse result))
((eq? key (car lst))(loop (cdr lst) (+ n 1) (cons n result)))
(else (loop (cdr lst) (+ n 1) result)))))
@omegatakuma
omegatakuma / main.scm
Created June 3, 2012 01:15
三目並べ
#!/usr/local/bin/gosh
(use srfi-27)
(define *board* (make-vector 9 'empty))
(define (board-ref n)(vector-ref *board* n))
(define (board-set! n m)(vector-set! *board* n m))
(define (print-board)
(let ((lst '((maru . "◯") (batu . "×") (empty . "."))))
(dotimes (x 9)
(format #t "~A " (cdr (assq (vector-ref *board* x) lst)))
@omegatakuma
omegatakuma / master.scm
Created May 30, 2012 14:14
マスターマインド
#!/usr/local/bin/gosh
(define (cows data ans)
(let loop ((ans ans)(count 0))
(cond ((null? ans)count)
((member (car ans) data)
(loop (cdr ans) (+ count 1)))
(else (loop (cdr ans) count)))))
(define (bulls data ans)
#!/usr/local/bin/gosh
(use gl)
(use gl.glut)
(define (draw_cube)
(let1 vert '#(
(1.0 1.0 1.0)
(-1.0 1.0 1.0)
(-1.0 -1.0 1.0)
(1.0 -1.0 1.0)
(1.0 1.0 -1.0)