Hacker News new | comments | show | ask | jobs | submit login
Brainfuck interpreter in 160 bytes of C (mearie.org)
70 points by dahlia on Sept 27, 2010 | hide | past | web | favorite | 8 comments

  // with whitespace:

  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 ?
                                :(*r = getchar())
              b&&c | a * *r;
      d = v;

You broke my record 191 bytes!


That is more than two lines of code obfuscated into two lines... but i like his idea to make this tiny enough to fit in a tweet.

140 is the limit for tweets so that they can fit your username.


I have been programming in C for a while, and can't recall ever seeing main called recursively. Neat.

I actually prefer readable code, but I accept that others appreciate small size as well.

I'm an original author of the code and I made it out of curiosity, not for other reasons. I also prefer readable (and concise) code in general, but shortening the code is a very different matter -- it is a sport (sometimes called code golfing) and not necessarily connected to good programming skills. And note that I have spent (and had to spend) only 24 hours to do it: code golfing is very time-consuming and 24 hours are often short for this standard. ;)

For the Brainfuck interpreter, I was also motivated by this StackOverflow question: http://stackoverflow.com/questions/1053931/code-golf-shortes... In this sense it does have a practical implication to gauge the minimal possible Turing-complete language implementation.

Who cares about tweets? It fits a text.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact