Common Lisp: A Gentle Introduction
to Symbolic Computation
Entire book -- PDF (1 MB file)
- http://www.psg.com/~dlamkins/sl/chapter24.html
- http://www.psg.com/~dlamkins/sl/chapter12.html
- http://www.psg.com/~dlamkins/sl/chapter21.html
Practical Common Lisp
ANSI common lisp
On Lisp
Lisp Cookbook
Wiki Books
SFU tutorial
Euler Project
L99 problems in lisp
http://lispdoc.com/ 검색기능 막강
And this (Scheme) book may be useful too:
http://www.htdp.org/2003-09-26/Book/
http://www.htdp.org/2003-09-26/Book/
http://cl-cookbook.sourceforge.net/ COOK BOOK
==============================================================================
==============================================================================
To use LispWorks for Windows
- Read the Release and Installation Notes (1.0MB).
- Download and install LispWorks Personal Edition (43.9MB).
------------------------------------------------------------------------------
http://www.nicklevine.org/declarative/lectures/
http://www.cs.sfu.ca/CC/310/pwfong/Lisp/
http://www.adampetersen.se/articles/lispweb.htm
http://weitz.de/hunchentoot/
http://www.xach.com/lisp/vecto/
http://www.cliki.net/CL-PDF
http://joeganley.com/code/jslisp.html
Using the Win32 API
(defun lott ()
(dotimes (n 6 listvalue)
(if (zerop n) (setf listvalue (list (+ 1 (random 45))))
(sort (setf listvalue (cons (+ 1 (random 45)) listvalue)) #'<))))
(defun lott ()
(dotimes (n 6 lotto-value)
(let ((selected-number (+ 1 (random 45))))
(if (zerop n) (setf lotto-value (list selected-number))
(loop
(if (member selected-number lotto-value)
(setf selected-number (+ 1 (random 45)))
(return (setf lotto-value (sort (cons selected-number lotto-value) #'<))) ))))))
(defun lotto-game (num)
(defun lott ()
(dotimes (n 6 lotto-value)
(let ((selected-number (+ 1 (random 45))))
(if (zerop n) (setf lotto-value (list selected-number))
(loop
(if (member selected-number lotto-value)
(setf selected-number (+ 1 (random 45)))
(return (setf lotto-value (sort (cons selected-number lotto-value) #'<))) ))))))
(dotimes (n num)
(print (lott)) ))
(defun lotto-draw (&optional &rest this-list)
(let ((alist (append '(0) this-list)))
(defun draw-star (num num+1)
(dotimes (n (- num+1 num 1))
(format t "~2a" '-))
(format t "~2a" num+1))
(defun draw-p (tlist)
(when (> (length tlist) 1)
(draw-star (first tlist) (first (rest tlist)))
(draw-p (rest tlist))))
(draw-p (sort alist #'<))))
(dotimes (m 8 "The End") ;; 구구단 2~9단
(dotimes (n 9 t)
(format t "~%~2a x ~1a = ~2a" (+ m 2) (+ n 1) (* (+ m 2) (+ n 1)))
(if (and (< m 7) (= n 8)) (format t "~%")) ))
(defun gugu-dan (x)
(dotimes (n 9 "The End")
(format t "~2a x ~1a = ~2a~%" x (+ n 1) (* x (+ n 1))) ))
(defun factors-of (num) ;; 약수 구하기1
(dotimes (n num "Done")
(if (= 0 (rem num (+ n 1))) (print (+ n 1))) ))
(defun factors-of (num) ;; 약수 구하기 2
(dotimes (n num "Done")
(if (= 0 (rem num (+ n 1))) (format t "~a " (+ n 1))) ))
(defun factors-of (num) ;; 약수를 리스트로 보여줌
(let ((result nil))
(dotimes (n num (reverse result))
(if (= 0 (rem num (+ n 1)))
(push (+ n 1) result)))))
(defun prime-numbers (&optional (from 2) (to 10)) ;; 두 수 사이의 소수 모두 구하기1
(let ((result nil))
(dotimes (n (- (+ to 1) from)
(format nil "~&The prime numbers from ~a to ~a are ~a"
from to (reverse result)))
(if (= (length (factors-of (+ n from))) 2)
(push (+ n from) result)))))
(defun prime-numbers (&optional (from 2) (to 10)) ;; 두 수 사이의 소수 모두 구하기2
(let ((result nil))
(dotimes (n (- (+ to 1) from) (reverse result))
(if (= (length (factors-of (+ n from))) 2)
(push (+ n from) result)))))
(defun length-prime-numbers (&optional (from 2) (to 10)) ;; 두 수 사이의 소수의 개수
(length (prime-numbers from to)))
(defun factorize (num) ;; 소인수분해해서 리스트로 출력하기 - 재귀호출 활용
(Let ((prime-set (prime-numbers 2 num)) (result ()))
(dolist (e prime-set result)
(if (= (rem num e) 0)
(setf result (sort (append (list e) (factorize (/ num e))) #'<))))))
(defun root (x)
(let* ((a (floor (sqrt x))) (b (rem x (* a a))))
(format t "~&~a (root~a)" a b)))
;; 수학처럼 20 = 2 root 5로 표현할 수 있도록 하려면?
;; 정수부분과 무리수 부분을 따로 구분해서 표현하려면?
;; (sqrt 20 = 4.472136을 활용할 수 있는 방법은?
;; 어떤 수의 거듭제곱으로 구성된 수인가?
(defun root (x)
(defun good-enoughp (guess)
(< (abs (- (* guess guess) x)) 0.001))
(defun improve (guess)
(average guess (/ x guess)))
(defun average (x y)
(/ (+ x y) 2))
(defun root-iter (guess)
(if (good-enoughp guess)
guess
(root-iter (improve guess))))
(root-iter 1.0))
;;;Ackemann Function
(defun A (x y)
(cond ((= y 0) 0)
((= x 0) (* 2 y))
((= y 1) 2)
(t (A (- x 1)
(A x (- y 1))))))
;; 피보나치 수열
(defun fibo (n)
(defun fibo-iter (a b n)
(if (= n 0) b
(fibo-iter (+ a b) a (- n 1))))
(fibo-iter 1 0 n))
CL-USER> (mapcar #'fibo '(1 2 3 4 5 6 7 8 9 10))
(1 1 2 3 5 8 13 21 34 55)