막장

모범답안

by 하늘바라KSND posted Dec 10, 2011
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
말 그대로 구하는 방법만 알려드립니다. 이미 다들 GOOD BYE라는건 아실테니.. 이렇게 구한거구나! 하시는 생각으로 봐주세요 
 
+++++++[>++++++++++<-]>+.<++[>++++<-]>..<++[>-----<-]>-.<++++++[>------<-]>.<++++++[>++++++<-]>--.<+++++[>+++++<-]>--.<+++++[>----<-]>.
 
 
hint로 나온 
http://ko.wikipedia.org/wiki/%EB%B8%8C%EB%A0%88%EC%9D%B8%ED%8D%BD참조 
 
문자 : 의미
 > : 포인터 증가
 < : 포인터 감소
 + : 포인터가 가리키는 바이트의 값을 증가
 - : 포인터가 가리키는 바이트의 값을 감소
 . : 포인터가 가리키는 바이트 값을 아스키 코드 문자로 출력한다.
 , : 포인터가 가리키는 바이트에 아스키 코드 값을 입력한다.
 [ : 포인터가 가리키는 바이트의 값이 0이 되면 ]로 이동한다.
 ] : 포인터가 가리키는 바이트의 값이 0이 아니면 [로 이동한다.
 
 
 
 
0) 코딩에 대해 모르시는 분들이 태반이실태니 아무것도 입력 안된상태에서는 「       」이라는 텅빈 상태라고 전제를 두겠습니다. 포인터는 자리수라고 생각하시면 편해요. 그리고 편의상 첫번째 자리가 가장 앞이고 두번째는 그 뒤로 하겠습니다.
쉽게 표현하자면 이런느낌입니다.
 
        V <- 포인터
「 1번째 2번째 3번째 4번째」
 
 
 
1) +++++++ 인데요 현재 포인터에대한 지정이 없으니 가장 첫자리입니다. +가 바이트값 증가니 +1이에요. 그럼 +++++++=? 1을 7번 더한값이므로 7입니다.「7」이 되는거죠. 포인터는 첫번째 자리에 있습니다
 
    V <- 포인터
「7」
 
 
2) [>++++++++++<-] 부분인데요.
2-1) 일단 루프(반복)을 나타나는 []는 빼두겠습니다 그럼 >++++++++++<-이 남죠? 여기서 <>들은 자리수 이동을 나타낸다고 했습니다. >니까 포인터 증가죠. 그럼 첫번째 자리에서 두번째 자리로 옮긴다는 소리입니다. 첫번째 자리값은 건드리지 않아요. 그리고 거기에 +가 10개네요 그럼 「7 10」이 됩니다. 포인터는 두번째 자리에 있습니다.
 
         V <- 포인터
「7 10」
 
2-2)그럼 >++++++++++까지 해석은 끝냈네요, 그럼 <-는 뭐냐? <값으로 다시 첫번째 자리값으로 위치를 옮깁니다. 그리고-는 값을 -1하란 소리죠 첫번째 자리엔 뭐가있었죠? 7이 있었죠. 그러니까 7-1=6이 됩니다. 포인터는 첫자리에 있습니다. 「6 10」이 됬네요 여기서 이게 끝이냐면 아닙니다.
 
    V <- 포인터
「6 10」
 
2-3) 미뤄뒀던 []를 처리해야죠. []는 한 세트라고 보시면됩니다. 둘이 폐쇄공간을 만들어요 일정 조건을 만족시킬때까지 서로 돌고돕니다. 그리고 위 의미를 참조하면 탈출하는 방법은 [에서 포인터가 가르키는 값이 0이되면 탈출할 수 있다는걸 알 수 있습니다. 모르시겠다면 그냥 그렇다고 생각하시면 편합니다.. 저도 뭐라 설명해야할지 모르겠네요. 포인터가 가르키는 값이 0되야한다고하죠?  현재 포인터의 위치는 어디인가요? 첫번째 자리입니다. 그럼 첫번째 자리가 0이 될때 까지 하라는 소리지요. 반복해보겠습니다. 위의 2-1 ~ 2-2를 반복해주세요
 
「6 10」-> 「5 20」 -> 「4 30」-> 「3 40」 -> 「2 50」 -> 「1 60」 -> 「0 70」 포인터는 여전히 첫번째 자리에 위치해있습니다.
 
    V <- 포인터
「0 70」
 
 
3) >+. 입니다! 최초의 출력이 나왔네요! .은 「」속의 숫자중 포인터가 지정하고있는 값을 우리가 알 수 있는 글자로 출력해줍니다. ABCD 이게 다 1234 이런식으로 각각 어떤 값에 대입되어있꺼든요(A가 1이고 B가2 이런건 아닙니다 ^^ 예시에요) 아무튼 앞의「0 70」에서 포인터는 첫째 자리죠 여기서 다시만난 >때문에 우리는 두번째 자리로 포인터를 옮깁니다. 그리고 +1해주네요. 「0 71」이 됩니다.
 
        V <- 포인터
「0 71」
 
그럼 포인터가 가르키고 있는값이 71 이라는것을 아시겠죠? 그럼 아래 위키 피디아로 들어가셔서 십진법 71이 얼마인지 보겠습니다.
http://ko.wikipedia.org/wiki/%EB%AF%B8%EA%B5%AD_%EC%A0%95%EB%B3%B4_%EA%B5%90%ED%99%98_%ED%91%9C%EC%A4%80_%EB%B6%80%ED%98%B8
 

G 네요!. 그럼 첫번째 출력 글자가 G라는것을 알 수 있습니다. 여기까지하니 첫번째 글자가 나왔지요? 위와 같은 방식을 반복하시면 . 마다 글자들이 나오는데 그게 GOOD BYE 입니다.(아스키 코드값은 스페이스(공백)도 값을 가지고있습니다.)


출처 : http://www.crecrew.net/board/free/1672

Who's 하늘바라KSND

profile

하늘바라KSND

하늘

하늘이

늘바

바라

하바

하바케이

하바케이엔

하느님 

------------------------------

현재 하는 일 :



허걱님과 함꼐하는 하늘섬 환상세계 시나리오 작성 중.

자세한 경과는 이야기 연재란에서.

 

Lighna형과 함께하는 프로젝트, D.A 시나리오 작성 중.

프로젝트 D.A 많은 관심 부탁드려요~

http://projetda.tistory.com/

-------------------------------

 

ㅎㅎ. 안녕하세요 하늘바라 KSND 입니다. 

(96년생)

성별 : 남

사용툴 : VX

주요 활동 : 소설쓰기, 댓글, 뻘글, 글소글

 

블로그 주소 : http://hb_tjdtn.blog.me/                 

 

이전 준비 중

http://habakn.tistory.com/