말 그대로 구하는 방법만 알려드립니다. 이미 다들 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