이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
구상준
가입: 2009년 9월 18일 올린 글: 27
|
올려짐: 2009년9월27일 13:37 주제: 저번주 실습실 과제를 올려주시면 감사하겠습니다. |
|
|
제가 그날 사정이 있어서... 미처 다하지 못하고
오늘 하려고 했는데, 종이가 없네요.
누가 지난주 실습실 과제를 올려주시면
감사하게 보겠습니다.
감사합니다. |
|
위로 |
|
 |
윤용호
가입: 2008년 9월 23일 올린 글: 257
|
올려짐: 2009년9월27일 14:27 주제: re |
|
|
1. subsets 함수
(1 2 3)에 대해서 ( () (3) (2) (2 3) (1) (1 3) (1 2) (1 2 3) ) 과 같은 subset들을 뽑아내는 함수 구현.
(define (subsets s)
(if (null? s)
(list null)
(let ((rest (subsets (cdr s))))
(append rest (map <??> rest)))))
<??>에 적당한 식을 채워넣습니다.
2. 다항식 계산
(...(an x + an-1)x + ... + a1)x + a0
와 같은 방식으로 다항식의 값을 구하는 (Horner's rule) 함수 작성
(define (horner-eval x coefficient-sequence)
(foldr (lambda (this-coeff higher-terms) <??>)
0
coefficient-sequence))
<??>에 적당한 식을 채워넣습니다.
3. my-reverse
list를 뒤집는 함수(reverse와 같은 일을 하는) 작성
4. my-reverse를 수정하여 deep-reverse 작성.
사용 예:
(define x (list (list 1 2) (list 3 (list 4 5))))
(reverse x)
; ((3 (4 5)) (1 2))
(deep-reverse x)
; (((5 4) 3) (2 1))
즉, 리스트 안의 리스트 안의 리스트 안의 리스트 ..... 까지 모두 뒤집습니다.
5. my-filter 함수 작성.
filter 함수와 같은 일을 하는 함수 my-filter를 작성합니다.
사용 예:
(my-filter (list 1 3 2 4) (lambda (x) (> x 2)))
; (3 4)
(my-filter (list 1 3 2 4) (lambda (x) (= x 1)))
; (1)
타입은 ('a list * ('a -> bool)) -> 'a list
임의의 리스트와 그 타입의 값을 받아 bool을 만들어내는 함수를 받아
리스트에서 함수의 적용값이 true인 것만 모은 리스트를 생성합니다.
6. my-append 함수 작성
append 함수와 같은 일을 하는 함수를 작성합니다. (두 리스트의 연결)
7. + * list 같은 함수들처럼 임의의 수의 argument를 받는 함수를 직접 만들 수 있습니다.
(define f x y . z) <body>)
이 함수 f는 최소한 2개,,, 2개 이상의 argument를 받아야 하며, 이 때 첫번째 argument는 x, 두번째 argument는 y, 그 이후의 argument들은 모두 순서대로 list 형태로 z에 들어갑니다. (즉 z는 항상 리스트이고 만약 해당하는 최소의 argument가 넘어오면 빈 리스트가 됩니다)
(f 1 2 3 4 5 6) 과 같이 표현하면 x는 1 y는 2 z는 (3 4 5 6)
(define (g . w) <body>)
이렇게 정의된 g는 argument를 안받을 수도 있습니다. ((g)로 호출)
(g 1 2 3 4 5) 하면 w는 (1 2 3 4 5)
위의 방식을 이용해서 same-parity 함수 작성.
하나 이상의 수를 받아 첫번째와 같은 parity(짝/홀)인 수들의 리스트를 만들어냅니다.
(same-parity 1 2 3 4 5 6 7) 로 호출하면 (1 3 5 7)
(same-parity 2 3 4 5 6 7)로 호출하면 (2 4 6)
append-many 함수도 작성.
임의의 수의 리스트들을 넘겨받아 그들을 줄줄이 이어줍니다.
(append-many '(1 2 3) '(4 5 6) '(7 8 9)) 하면
(1 2 3 4 5 6 7 8 9)가 만들어집니다. |
|
위로 |
|
 |
장수원
가입: 2008년 9월 26일 올린 글: 167
|
|
위로 |
|
 |
구상준
가입: 2009년 9월 18일 올린 글: 27
|
올려짐: 2009년9월27일 21:06 주제: 감사합니다. |
|
|
정말 윤용호님과 조교님들께는 감사드립니다. >ㅂ< |
|
위로 |
|
 |
|