SICP 연습문제 3.19 토끼와 거북이 학술

토끼와 거북이 알고리즘

앗.. 트랙백 걸고 보니 바보같이 hare를 무의식 중에 hair로 쳤다 -_-;;;

리스트를 살펴보고 그 속에 고리가 들어 있는지 살펴보는 프로시저를 만들어라. 리스트 속에 고리가 있다면, 리스트 끝을 cdr 연산으로 찾으려 해도 끝이 나지 않는다. 딱 정해진 만큼의 공간만 쓰는 알고리즘을 만들어 풀어 보아라.

(define (cycle? lst)
  (define (race tortoise hare)
    (cond ((eq? tortoise hare) #t)
          ((null? tortoise) #f)
          ((null? hare) #f)
          ((null? (cdr tortoise)) #f)
          ((null? (cdr hare)) #f)
          (else (race (cdr tortoise) (cddr hare)))))
 
  (race (cdr lst) (cddr lst)))

(define cycle '(a b c))
(set-cdr! (cddr cycle) cycle)

(cycle? cycle)
(cycle? '(1 2 3 4 5))

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://xeraph.com/tb/4121475 [도움말]

핑백

  • Xeraph beyond the Great Firewall : 2008년 회고록 (작성 중) 2008-12-18 00:05:11 #

    ... 깝지만 그래도 상당히 빡세게 진도 나갔습니다. SICP의 중턱에서연습문제 3.25 다차원 테이블 조작SICP 연습문제 3.27SICP 연습문제 3.19 토끼와 거북이SICP 7차 모임 문제 할당SICP 6차 문제 할당SICP 5차 모임용 문제 풀이 할당SICP 그림 언어 연습car와 ... more

덧글

댓글 입력 영역