엔트리 -코흐눈송이(Koch Snowflake) 그리기
엔트리 코딩시험에서 알고리즘의 가장 핵심적인 부분이 변수, 반복문, 조건, 함수이다.
프랙탈에 종류에 시어핀스키 삼각형과 다각형을 엔트리로 그려보았다.
본 글에서는 엔트리로 프랙탈의 한 종류인 코흐눈송이(Koch Snowflake)을 그려보자.
코흐눈송이란 프랙탈 도형 가운데 하나로 정삼각형을 그린 후, 각 변을 삼등분하고, 한 변의 길이가 이 삼등분의 길이와 같은 정삼각형을 붙이는 일을 무한히 반복하여 얻은 도형이다.
아래 그림은 엔트리로 코흐눈송이(Koch snowflask) 그린 실행화면이다.
요구사항
* 코흐눈송이 길이를 입력받는다.
* 코흐눈송이 레벨을 입력받는다.
* 변수
- 길이 : 코흐눈송이 길이를 입력받아 저장한다.
- 레벨 : 코흐눈송이 레벨을 입력받아 저장한다.
* 코흐눈송이 함수를 정의한다.
- 코흐눈송이 길이를 인자로 받는다.
- 코흐눈송이 레벨을 인자로 받는다.
- 레벨이 0보다 크면
. 코흐눈송이(len/3, level-1)
.60도 회전하기(시계반대방향)
. 코흐눈송이(len/3, level-1)
.120도 회전하기(시계방향)
. 코흐눈송이(len/3, level-1)
.60도 회전하기(시계반대방향)
분석 및 설계
. 변수만들기
- 길이 : 코흐눈송이 길이를 저장한다.
- 레벨 : 코흐눈송이 레벨을 저장한다.
. 초기화
. 펜 올리기
. 펜 색깔 검정색
. 모두 지우기
. len 리스트 항목 모두 지우기(디버깅 목적)
. 스프라이트 (0,0) 위치로 이동하기
. 90도 방향보기
. 묻고 기다리기(코흐눈송이 길이)
. 길이 변수에 '대답' 정하기
. 묻고 기다리기(코흐눈송이 레벨)
. 레벨 변수에 '대답' 정하기
. 코흐눈송이(길이, 레벨)
- 레벨이 0보다 크면
. 코흐눈송이(len/3, level-1)
.60도 회전하기(시계반대방향)
. 코흐눈송이(len/3, level-1)
.120도 회전하기(시계방향)
. 코흐눈송이(len/3, level-1)
.60도 회전하기(시계반대방향)
블럭코딩
. 초기화 . 펜관련 초기화 : 펜 색깔, 모두 지우기 . 스크래치 위치 초기화 : (0,0) 위치로 이동하기, 90도 방향보기, 크기 10%로 정하기 . 길이 변수 묻고대답하기로 정한다. . 레벨 변수 묻고대답하기로 정한다. |
. 코흐눈송이 함수 호출하기 - 3회 반복하기 - 코흐눈송이(길이, 레벨) - 120도 돌기 |
. 코흐눈송이(len, level) - 레벨이 0보다 크면 . 코흐눈송이(len/3, level-1) .60도 회전하기(시계반대방향) . 코흐눈송이(len/3, level-1) .120도 회전하기(시계방향) . 코흐눈송이(len/3, level-1) .60도 회전하기(시계반대방향) - 레빌이 0이면 . len 만큼 움직이기 |
* 실행 결과물
엔트리의 코흐눈송이 도형의 길이를 입력받는다. 예제에서는 150을 입력하였다.
엔트리의 코흐눈송이 레벨을 입력한다. 예제에서는 레벨을 3 입력한다.
아래 그림은 코흐눈송이 도형 실행 결과 화면이다.
엔트리로 작성한 코흐눈송이 도형은 프랙탈 도형을 블록코딩 작성해보았다. 레벨에 따라 코흐눈송이 결과가 다르게 출력이 된다.
재귀함수를 이제 3번째 활용하고 있다. 실행되는 원리 및 특히 재귀함수의 인자값의 변화를 추적하면 재귀함수의 원리를 파악하는데 도움이 될 것이다.
다시 한번 강조해서 말하지만, 변수의 값이 각 프로그램 단계별 순차적으로 어떻게 변화하는지 추척하는 것이 매우 중요하다. 블럭을 하나씩 쌓으면서 변수 볼륨 값의 변화를 살펴보자. 코딩은 눈으로 보면서 이해하고 학습하지만 직접 블럭을 쌓으며 이해하고 학습하는 것이 더 효과적이며 창의와 이해의 개념이 ~쑥 늘어납니다.
앞으로의 여러분의 모습을 기대합니다.
Just Do it!!!
Just Drag&Drop!!!
'엔트리메뉴 > 엔트리코딩시험-알고리즘' 카테고리의 다른 글
엔트리-최소값찾기 (0) | 2022.09.01 |
---|---|
엔트리-최대값찾기 (0) | 2022.08.31 |
엔트리-시어핀스키다각형그리기 (0) | 2022.08.29 |
엔트리-시어핀스키삼각형그리기 (0) | 2022.08.28 |
엔트리-다각형거미줄그리기 (0) | 2022.08.27 |
댓글