160バイトBrainfuckインタープリター
ツイートのサイズに収まり、pingに応答する
twIP IPスタックについて読んだ後、韓国のプログラマーであるKang Seonghoonは、ミニチュアでありながら実行可能なものを作成することにしました。 そして、彼はわずか160バイトのサイズで
最小の Brainfuck C
インタープリターを作成しまし
た 。
s[99],*r=s,*d,c;main(a,b){char*v=1[d=b];for(;c=*v++%93;)for(b=c&2,b=c%7?a&&(c&17?c&1?(*r+=b-1):(r+=b-1):syscall(4-!b,b,r,1),0):v;b&&c|a**r;v=d)main(!c,&a);d=v;}
インタープリターは、Brainfuckで任意のプログラムを実行できます。
$ cc bf.c -o bf
$ ./bf '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.'
Hello World!
もちろん、160バイトに圧縮する必要があるため、多くのものを環境に転送する必要がありました。 移植性が高く、環境に依存しないインタープリターのバージョンは170バイトです。
s[999],*r=s,*d,c;main(a,b){char*v=1[d=b];for(;c=*v++%93;)for(b=c%7?a&&(c&17?c&1?(*r-=c-44):(r+=c-61):c&2?putchar(*r):(*r=getchar()),0):v;b&&c|a**r;v=d)main(!c,&b-1);d=v;}
通常のタブを追加すると、コードは次のようになります。
All Articles