스크래치 COS -시어핀스키삼각형그리기
스크래치COS 코딩시험에서 알고리즘의 가장 핵심적인 부분이 변수, 반복문, 조건, 함수이다.
'내블럭'으로 시어핀스키 삼각형을 정의하고, 다각형을 활용하여 다각형 거미줄을 만들어보자.
시어핀스키 삼각형(Sierpinski triangle)은 폴란드 수학자 바츨라프 시어핀스키의 이름을 딴 프랙탈 도형이다.
각 단계별로 생기는 정삼각형의 수를 살펴보면
0 단계에서 1개
1단계에서 3개
2단계에서 9개
3단게에서 27개의 정삼각형이 생긴다.
이를 일반화하면 n단계에서 생기는 정삼각형의 개수는3^n이다.
요구사항
* 시어핀스키 삼각형 함수를 정의한다.
- 3회 반복하기
. n>5보다 크면(n은 변의 길이)
- 시어핀스크(n/2). <- 재귀함수
- n만큼 움직이기
- 120도 회전하기
-> 시어핀스키 삼각형을 재귀함수를 활용하여 시어핀스키 삼각형을 그린다.
. 재귀함수란 함수 바디에서 자신의 함수를 호출한다.
. len 리스트를 분석해보면
. 6.25 변의 길이의 삼각형을 하나 그린다.
. 그리고 12.5만큼 이동한다.
-> 이를 3회 반복한다. (3개의 삼각형을 그린다.)
. 그리고 25만큼 이동한다.
. 6.25 변의 길이의 삼각형을 하나 그린다.
. 그리고 12.5만큼 이동한다.
-> 이를 3회 반복한다.(3개의 삼각형을 그린다.)
이런식으로 재귀 반복하며 삼각형을 그려나간다.
* 삼각형 변의 길이를 입력받는다.
분석 및 설계
. 변수만들기
- 길이 : 다각형 한 변의 길이를 저장한다.
. 초기화
. 펜 올리기
. 펜 색깔 검정색
. 모두 지우기
. len 리스트 항목 모두 지우기(디버깅 목적)
. 스프라이트 (0,0) 위치로 이동하기
. 900도 방향보기
. 묻고 기다리기(변의 길이)
. 길이 변수에 '대답' 정하기
. 다각형(n, a)
. 다각형(n, a)
- 변의 개수만큼 반복
- n만큼 움직이기
- a도 돌기
. 시어핀스키 삼각형 함수
. 펜내리기
. 3번 반복하기
. n > 5이면
- 시어핀스키(n/2)
- n만큼 움직이기
- 120도 회전하기
변의 길이가 30인 시어핀스키 삼각형을 그려보자.
* 총 3개의 삼각형을 그린다.
. 변의 길이가 7.5인 삼각형을 그린다.
. 15만큼 이동한다. (120도 회전)
. 변의 길이가 7.5인 삼각형을 그린다.
. 15만큼 이동한다.(120도 회전)
. 변의 길이가 7.5인 삼각형을 그린다.
. 15만큼 이동한다.
. 30만큼 이동한다. (120도 회전)
. 그리고 다시 3개의 삼각형을 그린다.(위의 방식 그대로)
. 30만큼 이동한다.(120도 회전)
. 그리고 다시 3개의 삼각형을 그린다.(위의 방식 그대로 삼각형을 그린다.)
블럭코딩
. 초기화 . 펜관련 초기화 : 펜 색깔, 모두 지우기 . 스크래치 위치 초기화 : (0,0) 위치로 이동하기, 900도 방향보기, 크기 10%로 정하기 . 길이 변수 묻고대답하기로 정한다. |
. 시어핀스키 함수 호출하기 |
. 시어핀스키(n) - 펜 내리기 - 3 반복하기 . n>5이상이면 - 시어핀스키(n/2) - n만큼 움직이기 - 120도 돌기 |
* 실행 결과물
변의 길이가 30인 시어핀스키 삼각형을 그려보았다.
변의 길이가 200인 시어핀스키 삼각형을 그려보았다.
시어핀스키 삼각형을 그리는 프로그램을 작성해보았다. 이번 프로그램에서는 재귀함수에 대해서 학습하였다.
재귀함수는 이해하기 어렵지만, len 리스트를 활용하여 어떻게 동작하는지 이해하고 추적해보았다.
좀 더 깊숙한 실행 화면은 추후에 설명을 별도로 재귀함수에 대해서 살펴보기로 하자.
이번에는 프랙탈 시어핀스키 삼각형을 그려보았다.
어려운 도형 같지만, 재귀함수를 활용하여 간단하게 프랙탈 도형을 그려보았다.
다시 한번 강조해서 말하지만, 변수의 값이 각 프로그램 단계별 순차적으로 어떻게 변화하는지 추척하는 것이 매우 중요하다. 블럭을 하나씩 쌓으면서 변수 볼륨 값의 변화를 살펴보자. 코딩은 눈으로 보면서 이해하고 학습하지만 직접 블럭을 쌓으며 이해하고 학습하는 것이 더 효과적이며 창의와 이해의 개념이 ~쑥 늘어납니다.
앞으로의 여러분의 모습을 기대합니다.
Just Do it!!!
Just Drag&Drop!!!
'스크래치 > 스크래치 COS시험' 카테고리의 다른 글
스크래치COS-최대값찾기 (0) | 2022.08.01 |
---|---|
스크래치COS-코흐눈송이(Koch Snowflask) 그리기 (0) | 2022.07.31 |
스크래치COS-다각형거미줄그리기 (0) | 2022.07.28 |
스크래치COS-육각형거미줄그리기 (0) | 2022.07.27 |
스크래치COS-도형-별거미줄그리기 (0) | 2022.07.26 |
댓글