[파일명: testStringFindInVector.lsp]------------------------------------------------
#!/usr/bin/env clisp
;; Filename: testStringFindInVector.lsp
;;
;; Approximate square roots, cubic roots and n-th roots of a given number.
;;
;; Execute: clisp testStringFindInVector.lsp
;; Or
;; Execute: ./testStringFindInVector.lsp
;;
;; Date: 2013. 9. 12.
(defun my-exact-find(arr s)
; (position s arr))
(let ((r -1))
(loop for i from 0 below (length arr) do
(if (string= s (aref arr i))
(progn
(setf r i)
(return i))))
r))
(defun printArray(arr)
(format t "[")
(loop for i from 0 below (- (length arr) 1) do
(format t "~A, " (aref arr i)))
(if (plusp (length arr))
(format t "~A" (aref arr (- (length arr) 1))))
(format t "]~%"))
(setf *words* (vector "하나" "둘" "셋" "넷" "다섯" "여섯"))
(setf where (my-exact-find *words* "셋"))
(format t "vector: ")
(printArray *words*)
; (format t "where = ~A~%" where)
(if (and where (>= where 0))
(progn
(format t "발견! ~%")
(if (< where (length *words*))
(format t "Next word of 셋 in vector: ~A~%" (aref *words* (+ where 1))))))
(format t "Sorting...~%")
(sort *words* #'string<)
(setf where (my-exact-find *words* "셋"))
(format t "vector: ")
(printArray *words*)
(if (and where (>= where 0))
(progn
(format t "발견! ~%")
(if (< where (length *words*))
(format t "Next word of 셋 in vector: ~A~%" (aref *words* (+ where 1))))))
#|
Output:
vector: [하나, 둘, 셋, 넷, 다섯, 여섯]
발견!
Next word of 셋 in vector: 넷
Sorting...
vector: [넷, 다섯, 둘, 셋, 여섯, 하나]
발견!
Next word of 셋 in vector: 여섯
|#
------------------------------------------------
'프로그래밍 > Common Lisp' 카테고리의 다른 글
(Common Lisp 언어로 구현해 보는) 십진법의 신비: 숫자 계산 피라미드 세 가지 (0) | 2013.09.23 |
---|---|
Common Lisp 언어로 한 번의 floor 함수 호출로 몫과 나머지 구하기 (0) | 2013.09.15 |
Common Lisp 언어로 역삼각함수, 역쌍곡선함수 값을 구하는 예제 (0) | 2013.09.11 |
감마함수(gamma function)의 값을 (유효수자 15자리 까지 정밀하게) 계산하는 Common Lisp 언어 소스 (0) | 2013.09.08 |
Common Lisp 언어로 복소수 계산하기 (0) | 2013.09.07 |