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

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

by flycoding 2022. 8. 29.
반응형

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

 

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

함수로 시어핀스키 삼각형을 그리는 프로그램을 작성해보았다.

이제는 조금 응용해서 엔트리로 시어핀스키 다각형을 그리는 프로그램을 작성해볼 것이다. 

 

시어핀스키 삼각형(Sierpinski triangle)은 폴란드 수학자 바츨라프 시어핀스키의 이름을 딴 프랙탈 도형이다.

 

단계별 시어핀스키 삼각형

 

각 단계별로 생기는 다각형의 수를 살펴보면

0 단계에서 1개

1단계에서 3개

2단계에서 9개

3단게에서 27개의 다각형이 생긴다.

이를 일반화하면 n단계에서 생기는 다각형의 개수는3^n이다.

 

요구사항

* 시어핀스키 다각형 함수를 정의한다.

  - 변의 개수 만큼 반복하기

    . n>5보다 크면(n은 변의 길이)

      - 시어핀스크ㄷ(n/2). <- 재귀함수

      - n만큼 움직이기

      - angle 각도 회전하기

 

-> 시어핀스키 다각형을 재귀함수를 활용하여 시어핀스키 다각형을 그린다.

 

. 재귀함수란 함수 바디에서 자신의 함수를 호출한다.

. len 리스트를 분석해보면

  . 6.25 변의 길이의 다각형을 하나 그린다.

  . 그리고 12.5만큼 이동한다.

  -> 이를 3회 반복한다. (변의개수만큼의 다각형을 그린다.)

 

  . 그리고 25만큼 이동한다.

    . 6.25 변의 길이의 다각형을 하나 그린다.

    . 그리고 12.5만큼 이동한다.

    -> 이를 3회 반복한다.(변의 개수만큼의 다각형을 그린다.)

 

이런식으로 재귀 반복하며 다각형을 그려나간다.

 

* 다각형 변의 길이를 입력받는다.

* 다각형 변의 개수를 입력받는다.

 

분석 및 설계

. 변수만들기

  - 길이 : 다각형 한 변의 길이를 저장한다.

  - 변의개수 : 다각형 변의 개수를 저장한다.

  - 각도 : 다각형 각도를 저장한다.

 

. 초기화

  . 펜 올리기

  . 펜 색깔 검정색

  . 모두 지우기

  . len 리스트 항목 모두 지우기(디버깅 목적)

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

  . 90도 보기

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

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

 

. 시어핀스키 다각형 함수

  . 펜내리기

    . 변의개수 만큼 반복하기

      . n > 5이면

        - 시어핀스키다각형(n/2)

        - n만큼 움직이기

        - angle 각도 회전하기

 

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

* 총 변의 개수만큼의 다각형을 그린다.

  . 변의 길이가 7.5인 다각형을 그린다.

  . 15만큼 이동한다. (angle 각도 회전)

  . 변의 길이가 7.5인 다각형을 그린다.

  . 15만큼 이동한다.(angle 각도 회전)

  . 변의 길이가 7.5인 다각형을 그린다.

  . 15만큼 이동한다.

 

. 30만큼 이동한다. (angle 각도 회전)

  . 그리고 다시 변의 개수만큼의 다각형을 그린다.(위의 방식 그대로)

 

. 30만큼 이동한다.(angle 각도 회전)

  . 그리고 다시 변의 개수만큼의 다각형을 그린다.(위의 방식 그대로 다각형을 그린다.)

 

블럭코딩

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

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

 

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

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

 

. 시어핀스키다각형(n)
  - num 반복하기  /* 변의개수 */
    . n>5이상이면
      - 시어핀스키다각형(n/2)
      - n만큼 움직이기
      - -angle 각도 회전하기

 

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

 

* 실행 결과물

변의 길이를 키보드로부터 100을 입력한다.

 

엔트리-시어핀스키다각형 그리기 변의길이 입력

 

 

변의 개수를 키보드로부터 5을 입력한다. (시어핀스키 오각형 도형을 그린다.)

 

엔트리-시어핀스키다각형 그리기 변의개수 입력

 

변의 길이가 100이며 변의 개수가 5인 시어핀스키 오각형을 그려보았다.

 

엔트리-시어핀스키다각형 실행화면 (시어핀스키오각형)

 

변의 길이기 50,변의개수가 5인 시어핀스키 오각형은아래 실행결과 화면과 같다.

 

엔트리-시어핀스키다각형 실행화면(시어핀스키오각형)

 

변의 길이기 50,변의개수가 7인 시어핀스키 칠각형은아래 실행결과 화면과 같다.

엔트리-시어핀스키다각형 실행화면(시어핀스키칠각형)

 

 

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

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

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

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

 

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

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

 

Just Do it!!!

Just Drag&Drop!!!

 

MagneticFieldSen

 

반응형

댓글