• 검색 결과가 없습니다.

Homework 1 SNU 4910.210, Fall 2009 Kwangkeun Yi due: 9/19(Sat), 24:00

N/A
N/A
Protected

Academic year: 2021

Share "Homework 1 SNU 4910.210, Fall 2009 Kwangkeun Yi due: 9/19(Sat), 24:00"

Copied!
4
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

Homework 1

SNU 4910.210, Fall 2009 Kwangkeun Yi

due: 9/19(Sat), 24:00

Exercise 1 “좋은사이”

두개의 정수 리스트를 받아서 각 리스트의 원소들을 차례대로 사이사이에 끼워주는 함수 zipper를 작성하세요: 즉, (zipper ’(1 2 3) ’(4 5))는 (1 4 2 5 3)을 만들어낸다. 빈 리스트는 무시된다. 2

Exercise 2 “좋은사이들”

정수 리스트의 리스트를 받아서 각 리스트의 원소들을 차례대로 사이사이 에 끼워주는 함수 zipperN을 작성하세요: 즉, (zipperN ’((1 2 3) (4) (9 10 11)))는 (1 4 9 2 10 3 11)을 만들어낸다. 빈 리스트는 무시된다. 2 Exercise 3 “반복기”

다음함수 iter를 정의하세요:

(iter n f ) = f ◦ · · · ◦ f

| {z }

n

이 때, n = 0이면 아무일을 하지 않는(identity) 함수를 내 놓고, 양수이면 그 만 큼 f 를 반복해서 적용하는 함수를 내 놓습니다. 그래서,

((iter n (lambda (x) (+ 2 x))) 0) 은 2 × n을 내 놓게됩니다. 2

Exercise 4 “접기 반복”

1

(2)

다음과 같은 함수 fold가 정의되어 제공됩니다:

(fold ’(a1 · · · an) f c) = (f a1 (f a2 (· · · (f an c)· · · ))) (fold ’() f c) = c

위의 fold를 이용해서 아래 두 함수를 정의하세요:

• flatten: 리스트의 리스트를 받아서 하나의 리스트로 뭉개진 리스트를 내놓는다. 예를 들어,

(flatten ’((1 2) ((3) ()) 4)) = ’(1 2 3 4)

• foldsum: 임의의 정수 리스트를 받아서 그 정수들의 합을 내 놓는다. 빈 리스트의경우 0을 내 놓는다. 예를 들어,

(foldsum ’(1 2 3)) = 6 (foldsum ’(1 (2) ((3)) ())) = 6 2

Exercise 5 “k-친수”

일반적으로 k진수(k > 1)는 다음과 같이 표현한다.

d0· · · dn

여기서

∀di∈ {0, · · · , k − 1}.

그리고 “d0· · · dn”은 크기가

d0× k0+ · · · + dn× kn 인 정수를 표현한다.

이것을 살짝 확장해서 “k친수”를 다음과 같이 정의해보자. 표현은 d0· · · dn

여기서

∀di ∈ {1 − k, · · · , 0} ∪ {0, · · · , k − 1}.

그리고 “d0· · · dn”은 크기가

d0× k0+ · · · + dn× kn

2

(3)

인 정수를 표현한다.

예를 들어, 2친수의 경우를 생각하자. 베이스가 {−1, 0, 1}이 되겠다. 0이 0을, +가 1을 -가 −1을 표현한다고 하면, + 는 1을, +0+는 5를, +-는 −1을, +-0-는 −9인 정수를 표현한다.

이러한 2친수 N 의 집합을 귀납적으로 정의하면 다음과 같다:

N ::= 0

| +

| -

| 0N

| +N

| -N

그리고, Scheme에서는 2친수 N 을 다음과 같은 방법 N 에 의해 Scheme의 리스 트로 표현할 수 있다:

0 = (cons ’z ()) + = (cons ’p ()) - = (cons ’n ()) 0N = (cons ’z N ) +N = (cons ’p N ) -N = (cons ’n N ) 즉, 0+-는 Scheme에서

(cons ’z (cons ’p (cons ’n ()))) 로표현된다, 왜냐하면

0+- = (cons ’z +-)

= (cons ’z (cons ’p -))

= (cons ’z (cons ’p (cons ’n ()))).

자 이제, 위와 같이 표현되는 2친수를 받아서 그것의 값을 계산하는 함수 crazy2val을 정의하라

crazy2val : 2친수 → 정수.

2

Exercise 6 “2친수 더하기”

3

(4)

두 2친수를 받아서 2친수의 합에 해당하는 2친수를 내어놓는 함수 crazy2add를 정의하라

crazy2add : 2친수 × 2친수 → 2친수.

위의 crazy2add는 다음의 성질이 만족되야 한다:

• 당연히, 임의의 2친수 z 과 z0에 대해서

(crazy2val (crazy2add z z0)) = (crazy2val z) + (crazy2val z0).

• crazy2add은 재귀적으로 정의되야 한다.

2친수 두 개(d0· · · dn, d00· · · d00m)를 더하는 것은 각 자릿수 di과 d0i를 더해 서 만들어 진다. 이전 자릿수를 더해서 이번 자릿수로 넘어온 수(carry) ci를 생각해야 하므로, di+ d0i+ ci를 i = 0부터 더하면서 구할 수 있다.

2

Exercise 7 “2친수 빼기”

두 2친수를 받아서 2친수의 빼기에 해당하는 2친수를 내어놓는 함수 crazy2sub를 정의하라

crazy2sub : 2친수 × 2친수 → 2친수.

위의 crazy2sub은 다음의 성질이 만족되야 한다:

• 당연히, 임의의 2친수 z 과 z0에 대해서

(crazy2val (crazy2sub z z0)) = (crazy2val z) − (crazy2val z0).

• crazy2sub은 재귀적으로 정의되야 한다.

2

4

참조

관련 문서

사전에 충분히 대비하지 못한 심각한 사고가 발생하는 경우, 사고 수습에 책임이 있는 주체들은 외부와의 소통에 충분한 주의를 기울이기 어려운 반면, 외부에서는 충분한

2009 Fall, Computer Aided Ship Design – Part1 Optimal Ship Design.. @ SDAL Advanced Ship

 The intact stability characteristics of any ship carrying bulk grain must be shown to meet, throughout the voyage, the following criteria relating to the moments due to

Hull Form Modeling 2009 Fall, Computer Aided Ship Design – Part2... @ SDAL Advanced Ship

한편 IMF와 IPCC의 온실가스 감축비용 추정 결과 를 보면 대체로 OECD의 추정치보다 더 많은 대응 비용이 산출되었는데 이는 각각의 적용모델이 다른 데다 기술수준,

최근 해양 분야에서 관심이 높아지고 있는 해양의 변화는 해양 산성화(acidification)이다. 인위적으로 증가된 이산화탄소가 해양에 흡수 저장되면서 화 학적

국내·외 STEAM 교육 사례 및 자료 분석을 통한 교육 연구 토대 마련 개정2009교육과정 창의적 체험활동 프로그램 주제 제시 및 적용..

2009 Fall, Computer Aided Ship Design, Part3 Grillage Analysis of Midship Cargo