Hacker News new | comments | show | ask | jobs | submit login
Brainfuck interpreter in 160 bytes of C (mearie.org)
70 points by dahlia 2461 days ago | hide | past | web | 8 comments | favorite



  // 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 ?
                                putchar(*r)
                                :(*r = getchar())
                      ,0)
                  :v;
              b&&c | a * *r;
              v=d)
                  main(!c,&b-1);
      d = v;
  }


You broke my record 191 bytes!

http://coldnose-sloth.livejournal.com/1024.html


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.


Cool.

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 | DMCA | Apply to YC | Contact

Search: