[LISP Programming] LISP으로 작성한 물병문제

등록일 2003.05.11 기타파일 (lsp) | 2페이지 | 가격 1,000원

*해당 문서는 미리보기가 지원되지 않습니다.

소개글

LISP을 사용해서 첫번째 물병에 일정양의 물을 남기도록 하는 프로그램 입니다.
서로 크기가 다른 두 물병을 이용해서 첫번째 물병에 문제에서 요구하는 양을 만듭니다.
예를 들어서 (solve '(5 3) '(4 0)) 는 크기가 5L와 3L인 두 물병을 이용해서 첫번째 물병에 물을 4L로 만들라는 것입니다.

목차

없음

본문내용

(setq xmax 0) ;; 첫번째 물병의 용량
(setq ymax 0) ;; 두번째 물병의 용량
(setq xgoal 0) ;; 첫번째 물병에 채우고 싶은 양
(setq ygoal 0) ;; 두번째 물병에 채우고 싶은 양 (과제의 경우에는 항상 0)
(setq trail nil) ;; 물을 옮겨담는 순서를 기록할 list

;; 물을 옮겨담는 함수
( defun exec (alist) (progn
(set 'trail (append trail (list alist))) ;; 현재 물병의 상태를 trail에 기록한다.
;; 원래는 (a b)의 상태로 저장되어 있으므로 list를 이용해서 ((a b))의 상태로 만든다음 append하면 ((c d)...(a b))의 형태로 저장된다.
(set 'xpres (first alist)) ;; 첫번째 물병에 담긴 물의 양을 얻어냄
(set 'ypres (second alist)) ;; 두번째 물병에 담긴 물의 양을 얻어냄
(if (and (equal xpres xgoal) (equal ypres ygoal)) "complete!" ;; 목표량에 도달하면 "complete!"된다.
...
      최근 구매한 회원 학교정보 보기
      1. 최근 2주간 다운받은 회원수와 학교정보이며
         구매한 본인의 구매정보도 함께 표시됩니다.
      2. 매시 정각마다 업데이트 됩니다. (02:00 ~ 21:00)
      3. 구매자의 학교정보가 없는 경우 기타로 표시됩니다.
      최근 본 자료더보기