Think Like a Programmer - An Introduction to Creative Problem Solving
The Fox, the Goose, and the Corn
문제: 어떻게 강을 건널 것인가?
여우, 거위, 옥수수의 자루를 가지고 있는 농부는 강을 건너야 한다.
농부는 노 젓는 보트가 하나 있다.
보트에는 농부와 하나의 아이템만 실을 수 있다.
불행하게도, 여우와 거위는 모두 굶주려 있다.
여우는 거위와 함께 혼자 놔둘 수 없다. 여우는 거위를 먹을 것이다.
마찬가지로, 거위는 옥수수와 함께 혼자 놔둘 수 없다.
거위는 옥수수를 먹을 것이다.
육지 | 강 | 육지 |
---|---|---|
여우, 거위, 옥수수 | 시작 | |
여우, 옥수수 | > | 거위 |
여우, 옥수수 | < | 거위 |
옥수수 | > | 여우 , 거위 |
옥수수, 거위 |
< | 여우 |
거위 | > | 여우, 옥수수 |
거위 | < | 여우, 옥수수 |
- | > | 여우, 옥수수, 거위 |
먼저, 제약사항을 나열한다.
- 농부는 보트에 한번에 하나의 아이템만 실을 수 있다.
- 여우와 거위는 함께 혼자 놔둘 수 없다.
- 거위와 옥수수는 함께 혼자 놔둘 수 없다.
다음, 기능을 나열한다.
- 여우를 옮긴다.
- 거위를 옮긴다.
- 옥수수를 옮긴다.
일반화 작업들
- 보트를 다른편으로 이동한다.
- 보트가 비었다면, 아이템을 실는다.
- 보트가 비어있지 않다면, 아이템을 내린다.
Sliding Tile Puzzles
문제: Sliding Eight
3 × 3 격자에 1-8 번호가 적힌 8개의 타일과 하나의 빈 공간으로 채워져있다.
처음에는 그리드는 뒤죽박죽으로 구성되어있다.
타일은 인접한 빈 공간으로 이동할 수 있고, 이동한 타일이 있던 자리는 빈 공간으로 남는다.
목표는 왼쪽 상단에 타일 1 부터 해서 순차적으로 구성되도록 그리드에 타일들을 밀는 것이다.
### The Quarrasi Lock
적대적인 외계인 Quarrasi가 지구에 착륙했다.
당신은 잡혔다.
captured.You've들이 엄청난 및 촉수 있지만 (아직 접지) 우주선을 탈출, 당신이에도 불구하고, 당신의 경비원을 제압하는 데 성공 봤는데 massivedoor를 엽니 다. 문을 열기위한 지침은 영어로 인쇄, 이상하게도 있습니다라나! - 클로이 여전히 케이크의 어떤 조각이 없습니다. 에 …
General Problem-Solving Techniques
- 계획한다.
- 문제를 다시 생각한다.
- 문제를 나눈다.
- 알고 있는 것부터 시작한다.
- 문제를 축소한다.
- 유추한다.
- 실험한다.
- 좌절하지 않는다.
이 챕터에서 사용하는 C++ 코드
#include <iostream>
using std::cin;
using std::cout;
LUHN 체크섬 검증
Luhn 공식은 식별 번호를 검증하기 위한 방법으로 널리 사용되는 시스템입니다.
짝수번째에 위치한 모든 숫자들의 값을 2배로 변환한다.
각 자리의 값들을 모두 더한다.
(두배로 변환한 값이 두 자리의 값을 갖는다면, 각 자리의 값을 더한다)
합이 10로 나눠질 경우, 식별 번호가 유효하다.
원래 식별 번호가 176248
인 경우
176248
1+(7*2)+6+(2*2)+4+(8*2)
1+(14)+6+(4)+4+(16)
1+(1+4)+6+(4)+4+(1+6)
27
--> 10으로 나눠지기 위한 값 : 3
문제 분해하기
우리는 항상 계획을 갖고 싶어하기 때문에, 우리는 이슈 목록을 만들어 하나씩 해결 해야한다
- 각 자리수의 두배 값
- 두배 했을 때 10이상인 값에 대한 처리
- 수 끝에 도달했을 때 인식
- 개별적으로 각 숫자 읽기
int doubleDigitValue(int digit) {
int doubledDigit = digit * 2;
int sum;
if (doubledDigit > 10) sum = 1 + doubledDigit % 10;
else sum = doubledDigit;
return sum;
}
단어
- riddle
- 수수께끼
- rowboat
- 노 젓는 보트
- shore
- 육지
참고
- Think Like a Programmer - An Introduction to Creative Problem Solving
'Blog > 미디어' 카테고리의 다른 글
[책] 무료 책 다운로드 (0) | 2016.05.18 |
---|---|
[책] 곁에 두고 읽는 니체 (0) | 2016.04.03 |
영화무료관람권이 과연 기업에게 이득인가? (0) | 2016.03.23 |
[영상] 영상을 제작할 때의 참고 사항 (0) | 2016.01.16 |
명언 모음 (0) | 2016.01.05 |
댓글