본문 바로가기
엔트리메뉴/엔트리코딩시험-알고리즘

엔트리-시어핀스키삼각형그리기

by flycoding 2022. 8. 28.
반응형

엔트리-시어핀스키삼각형그리기

 

엔트리 코딩시험에서 알고리즘의 가장 핵심적인 부분이 변수, 반복문, 조건, 함수이다.

함수로 시어핀스키 삼각형을 정의하고, 엔트리로 시어핀슼삼각형을 그려볼 것이다.

 

시어핀스키 삼각형(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 리스트 항목 모두 지우기(디버깅 목적)

  . 스프라이트 (-100,-1000) 위치로 이동하기

  . 90도 보기

  . 묻고 기다리기(변의 길이)

  . 길이 변수에 '대답' 정하기

 

. 시어핀스키 삼각형 함수

  . 펜내리기

    . 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개의 삼각형을 그린다.(위의 방식 그대로 삼각형을 그린다.)

 

블럭코딩

. 초기화
  . 펜관련 초기화 : 펜 색깔, 모두 지우기
  . 엔트리 위치 초기화 : (-100,-100) 위치로 이동하기, 90도 방향보기, 크기 10%로 정하기
  . 길이 변수 묻고대답하기로 정한다.

 

엔트리-시어핀스키삼각형 초기화

 

. 시어핀스키 함수 호출하기

엔트리-시어핀스키 함수 호출

 

 

. 시어핀스키(n)
  - 펜 내리기
  - 3 반복하기
    . n>5이상이면
      - 시어핀스키(n/2)
      - n만큼 움직이기
      - 120도 돌기

 

엔트리-시어핀스키삼각형함수

 

 

* 실행 결과물

변의 길이가 30인 시어핀스키 삼각형을 그려보았다.

 

엔트리-시어핀스키삼각형 실행화면 (변의길이 30)

 

 

변의 길이가 200인 시어핀스키 삼각형을 그려보았다.

 

엔트리-시어핀스키삼각형그리기 실행화면

 

시어핀스키 삼각형을 그리는 프로그램을 작성해보았다. 이번 프로그램에서는 재귀함수에 대해서 학습하였다.

좀 더 깊숙한 실행 화면은 추후에 설명을 별도로 재귀함수에 대해서 살펴보기로 하자.

이번에는 프랙탈 시어핀스키 삼각형을 그려보았다.

어려운 도형 같지만, 재귀함수를 활용하여 간단하게 프랙탈 도형을 그려보았다.

 

다시 한번 강조해서 말하지만, 변수의 값이 각 프로그램 단계별 순차적으로 어떻게 변화하는지 추척하는 것이 매우 중요하다. 블럭을 하나씩 쌓으면서 변수 볼륨 값의 변화를 살펴보자. 코딩은 눈으로 보면서 이해하고 학습하지만 직접 블럭을 쌓으며 이해하고 학습하는 것이 더 효과적이며 창의와 이해의 개념이 ~쑥 늘어납니다. 

앞으로의 여러분의 모습을 기대합니다.

 

Just Do it!!!

Just Drag&Drop!!!

 

MagneticFieldSen
반응형

댓글