eunmin / sicp

SICP 릴레이 문제 풀이
Eclipse Public License 1.0
3 stars 4 forks source link

SICP 릴레이 문제 풀이

순서

읽기표

목차 김은민 오광수 곽윤도 다영글 이민선 김세시나 김용훈
1.1 프로그램 짤 때 바탕이 되는 것
1.1.1 식
1.1.2 이름과 환경
1.1.3 엮은식(combination)을 계산하는 방법
1.1.4 묶음 프로시저(compound procedure)
1.1.5 맞바꿈 계산법(substitution model)으로 프로시저를 실행하는 방법
1.1.6 조건 식과 술어(predicate )
:books: 연습문제 1.1 ~ 1.5
1.1.7 연습 : 뉴튼 법(newton method)으로 제곱근 찾기
:books:연습문제 1.6 ~ 1.8
1.1.8 블랙박스처럼 간추린 프로시저
1.2 프로시저와 프로세스
1.2.1 되돌거나(recursion) 반복하는(iteration) 프로세스
:books: 연습문제 1.9 ~ 1.10
1.2.2 여러 갈래로 되도는 프로세스
1.2.3 프로세스가 자라나는 정도
1.2.4 거듭제곱
1.2.5 최대 공약수
1.2.6 연습 : 소수 찾기
1.3 차수 높은 프로시저(higher-order procedure)로 요약하는 방법
1.3.1 프로시저를 인자로 받는 프로시저
1.3.2 lambda로 나타내는 프로시저
1.3.3 일반적인 방법을 표현하는 프로시저
1.3.4 프로시저를 만드는 프로시저
2.1 데이터 요약데이터 간추리기, 데이터 내용 감추기
2.1.1 연습 : 유리수를 위한 산술 연산
2.1.2 요약의 경계(abstraction barrier)
2.1.3 데이터란 무엇인가?
2.1.4 집중 과제 : 구간 산술 연산 만들기
2.2 계층 구조 데이터와 닫힘 성질
2.2.1 차례열의 표현 방법
2.2.2 계층 구조
2.2.3 공통 인터페이스로써 차례열의 쓰임새
2.2.4 연습 : 그림 언어
2.3 글자기호 데이터
2.3.1 따옴표 연산
2.3.2 연습 : 글자 식의 미분(symbolic differentiation)
2.3.3 연습 : 집합을 나타내는 방법
2.3.4 연습 : 허프만 인코딩 나무
2.4 요약된 데이터의 표현 방식이 여러 가지일 때
2.4.1 복소수 표현
2.4.2 타입을 표시한 데이터
2.4.3 데이터 중심 프로그래밍과 덧붙임 성질
2.5 일반화된 연산 시스템
2.5.1 일반화된 산술 연산
2.5.2 타입이 다른 데이터를 엮어 쓰는 방법
2.5.3 연습 : 기호 식 대수
3.1 덮어쓰기와 갇힌 상태(local state)
3.1.1 갇힌 상태변수(local state variable)
3.1.2 덮어쓰기가 있어서 좋은 점
3.1.3 덮어쓰기를 끌어들인 대가
3.2 환경 계산법
3.2.1 계산 규칙
3.2.2 간단한 프로시저 계산하기
3.2.3 물체에 상태를 넣어두는 곳, 변수 일람표
3.2.4 안쪽 정의
3.3 변형 가능한 데이터로 프로그래밍하기
3.3.1 변형 가능한 리스트
3.3.2 큐
3.3.3 표
3.3.4 디지털 회로 시뮬레이터
3.3.5 관계 알리기(constraint propagation)
3.4 병행성竝行性 : 시간은 중요하다
3.4.1 병행 시스템에서 시간의 성질본질
3.4.2 병행성을 다스리는 방법
3.5 스트림
3.5.1 스트림과 (계산을) 미룬 리스트
3.5.2 무한 스트림(infinite stream)
3.5.3 스트림 패러다임
3.5.4 스트림과 셈미룸 계산법
3.5.5 모듈로 바라본 함수와 물체

문제표

문제 김은민 오광수 곽윤도 다영글 이민선 김세시나 김용훈 릴레이 주자 링크
1.1 ex_1_1.clj
1.2 ex_1_2.clj
1.3 ex_1_3.clj
1.4 ex_1_4.clj
1.5 ex_1_5.clj
1.6 ex_1_6.clj
1.7 ex_1_7.clj
1.8 ex_1_8.clj
1.9 ex_1_9.clj
1.10 ex_1_10.clj
1.11 ex_1_11.clj
1.12
1.13
1.14
1.15
1.16
1.17
1.18
1.19
1.20
1.21
1.22
1.23
1.24
1.25
1.26
1.27
1.28
1.29
1.30
1.31
1.32
1.33
1.34
1.35
1.36
1.37
1.38
1.39
1.40
1.41
1.42
1.43
1.44
1.45
1.46
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14
2.15
2.16
2.17
2.18
2.19
2.20
2.21
2.22
2.23
2.24
2.25
2.26
2.27
2.28
2.29
2.30
2.31
2.32
2.33
2.34
2.35
2.36
2.37
2.38
2.39
2.40
2.41
2.42
2.43
2.44
2.45
2.46
2.47
2.48
2.49
2.50
2.51
2.52
2.53
2.54
2.55
2.56
2.57
2.58
2.59
2.60
2.61
2.62
2.63
2.64
2.65
2.66
2.67
2.68
2.69
2.70
2.71
2.72
2.73
2.74
2.75
2.76
2.77
2.78
2.79
2.80
2.81
2.82
2.83
2.84
2.85
2.86
2.87
2.88
2.89
2.90
2.91
2.92
2.93
2.94
2.95
2.96
2.97
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14
3.15
3.16
3.17
3.18
3.19
3.20
3.21
3.22
3.23
3.24
3.25
3.26
3.27
3.28
3.29
3.30
3.31
3.32
3.33
3.34
3.35
3.36
3.37
3.38
3.39
3.40
3.41
3.42
3.43
3.44
3.45
3.46
3.47
3.48
3.49
3.50
3.51
3.52
3.53
3.54
3.55
3.56
3.57
3.58
3.59
3.60
3.61
3.62
3.63
3.64
3.65
3.66
3.67
3.68
3.69
3.70
3.71
3.72
3.73
3.74
3.75
3.76
3.77
3.78
3.79
3.80
3.81
3.82

문제 풀고 올리는 방법

leiningen 설치

brew install leiningen
==> Downloading https://homebrew.bintray.com/bottles/leiningen-2.6.1.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring leiningen-2.6.1.el_capitan.bottle.tar.gz
==> Caveats
Dependencies will be installed to:
  $HOME/.m2/repository
To play around with Clojure run `lein repl` or `lein help`.

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
🍺  /usr/local/Cellar/leiningen/2.6.1: 8 files, 14.7M

프로젝트 clone

git clone https://github.com/eunmin/sicp.git

문제 풀어서 올리는 방법

(ns sicp.자기아이디.ex-1-1)

(def 문제
  "두 숫자를 인자로 받아 두 값을 덧셈하여 내놓는 프로시저를 정의하라.")

;; 아래에 자유롭게 연습 문제 코드를 작성합니다.
(defn add [x y]
  (+ x y))

문제 실행해 보기

문제 파일을 다 작성하면 커밋 후 Push 하고 단톡방에 다했다고 메시지를 남깁니다.