2013/09/06 6

스트링 리스트에서 스트링 찾기(find) with Common Lisp

[파일명: testStringFindInList.lsp]------------------------------------------------ (defun my-find(arr s) (let ((k -1) (r -1)) (loop for i from 0 below (length arr) do (setf k (search s (nth i arr))) (if k (progn (setf r i) (return i))) ) r ) ) (defun printList(arr) (format t "[") (loop for i from 0 below (1- (length arr)) do (format t "~A, " (nth i arr)) ) (if (plusp (length arr)) (format t "~A" (n..

스트링 배열 정렬(sorting)하기 with Common Lisp

[파일명: testSort.lsp]------------------------------------------------ (defun printArray(a) (format t "[") (loop for i from 0 below (1- (length a)) do (format t "~A, " (nth i a)) ) (if (plusp (length a)) (format t "~A" (nth (1- (length a)) a)) ) (format t "]~%") ) (setf list ext:*args*) (sort list #'string clisp testSort.lsp one two three four five [five, four, one, three, two] 실행> clisp testSort.l..

Pollard's rho method 소개: 정수의 인수분해(factorizing integers) with Common Lisp

정의 (소수와 합성수) 1보다 큰 양의 정수 n에 대하여 (i) n = a * b 를 만족하고 1보다 큰 두 양의 정수 a와 b가 존재하면, n을 합성수(合成數, composite number)라고 한다. 참고로 이 경우, a, b 중에 적어도 하나는 sqrt(n) 보다 작거나 같다. 합성수의 예로는 4, 6, 9, 24, 143 등이 있다. (ii) n = a * b 를 만족하고 1보다 큰 두 양의 정수 a와 b가 존재하지 않으면, 즉 n을 두 양의 정수의 곱으로 표현하는 방법이 1*n과 n*1 두 가지 뿐이면, n을 소수(素數, prime number)라고 한다. 소수의 예로는 2, 3, 5, 7, 11 등이 있다. n이 소수인지 아닌지 확인하려면, n을 2 보다 크거나 같고 sqrt(n) 보다 작거..

손으로 계산하는 긴자리 곱셈표 만들기 with Common Lisp

초등학교 때 배우는 두 정수의 곱셈표를 만들어 주는 Common Lisp 소스이다. (이 소스는 CLisp으로 잘 실행됨을 확인하였다.) Common Lisp 언어로, 양의 정수 a를 양의 정수 b로 나는 몫을 구하려면 (setf q (floor (/ a b))) 한다. 그 몫은 변수 q에 저장된다. 이렇게 하는 이유는 (setf q (/ a b)) 로 한 경우 q에는 분수 a/b가 저장되기 때문이다. ;; Filename: makeMultTable.lsp ;; ;; Print a multiplication table. ;; ;; Execute: clisp makeMultTable.lsp 230 5100 ;; ;; Date: 2013, 9. 6. (defun printUsing() (format t "U..

문자열 거꾸로 하기 with Common Lips

▒ Common Lips 소스: testStringReverse.lsp #!/usr/bin/env clisp (defun my-string-reverse (s) (let* ((arr (concatenate 'list s)) (arr2 (reverse arr))) (format nil "~{~A~^~}" arr2) ) ) (setf s "Hello, world!") (setf s2 "안녕하세요?") (format t "s = ~A~%" s) (format t "(reverse s) = ~A~%" (reverse s)) (format t "(my-string-reverse s) = ~A~%" (my-string-reverse s)) (format t "s2 = ~A~%" s2) (format t "(reve..

손으로 만드는 나눗셈 계산표 with Common Lisp

다음은 초등학교에서 배우는 나눗셈 계산표를 만들어주는 Common Lisp 소스 코드이다. 나눗셈 계산표를 완성하고 나서 약수, 배수 관계를 알려준다. 아래의 소스는 CLisp으로 실행되도록 작성되었다. #!/usr/bin/env clisp ;; Filename: makeDivisionTable.lsp ;; ;; Purpose: Make a division table in a handy written form. ;; ;; Execute: clisp makeDivisionTable.lsp 12345 32 ;; clisp makeDivisionTable.lsp 500210 61 ;; ./makeDivisionTable.lsp 500210 61 ;; ;; Date: 2013, 9. 5. (defun print..