
이 함수는 Brainf*ck 프로그래밍 언어를 실행하는 코드입니다. Brainfuck(보통은 Brainf*ck이라고 많이 씁니다만)은 8개의 명령(+-<>[].,)으로만 구성된 아주 작은 프로그래밍 언어로, 자세한 내용은 위키백과사전을 참고하시길 바랍니다.
이 구현은 실제 Brainf*ck 언어의 스펙과 정확하게 일치하지는 않습니다만 (모든 메모리는 1바이트 단위로 접근해야 합니다) 귀찮아서 때려 치웠습니다. 또한 이 언어는 나중에 다른 인터프리터들에 의해서 여러 용도로 사용되는 외부 명령 몇 개(@ 같은)가 추가되었습니다만 역시나 그런 것들도 때려 치웠습니다. -_-
이 함수는 버퍼 없는 입출력을 지원하기 위해서 운영체제에 종속적인 코드를 사용합니다. 다음은 윈도우즈 환경에서의 msvcrt 모듈을 사용하는 함수입니다:
def bf(s):exec"from msvcrt import*;p=q=d=n=0;x={};l=[]\nwhile p<len(s):\n if d:\
d+={'[':1,']':-1}.get(s[p],0zin'+-':n+=44-ord(s[p]zin'<>':x[q]=n;q+=ord(s[p])-6\
1;n=x.get(q,0z=='.':putch(chr(n)z==',':n=ord(getche()z==']':p=-1+l.pop(z=='[':d\
,=n and[l.append(p)]or[1]\n p+=1".replace('z',')\n elif s[p]')#tokigun20041119:)
그리고 다음은 리눅스/유닉스/BSD 환경(정확히는, curses 라이브러리를 지원하는 모든 환경)에서의 curses 모듈을 사용하는 함수입니다:
def bf(s):exec"from curses import*;u=initscr();p=q=d=n=0;x={};l=[]\nwhile p<len\
(s):\n if d:d+={'[':1,']':-1}.get(s[p],0zin'+-':n+=44-ord(s[p]zin'<>':x[q]=n;q+\
=ord(s[p])-61;n=x.get(q,0z=='.':u.echochar(nz==',':n=u.getch(z==']':p=-1+l.pop(\
z=='[':d,=n and[l.append(p)]or[1]\n p+=1\nendwin()".replace('z',')\n elif s[p]')
이 코드는 파이썬 코드로 파이썬 인터프리터가 필요합니다. 파이썬 인터프리터에서 자기 환경에 맞는 코드를 실행해서 함수를 선언한 후, 다음과 같이 Brainf*ck 코드를 인자로 넘겨 주면 실행할 수 있습니다. (모든 명령 아닌 문자는 무시됩니다.)
>>> bf('''# brainfuck code here!
++++++++[->+++++++++<]>.+<++++[->+++++++<]>.++++
+++..+++.[-]+<++++[->++++++++<]++++++++++>.<.''')
Hello!