{"id":1072,"date":"2011-08-02T01:17:35","date_gmt":"2011-08-01T23:17:35","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=1072"},"modified":"2011-08-02T02:55:07","modified_gmt":"2011-08-02T00:55:07","slug":"fizzbuzz-brainfuck","status":"publish","type":"post","link":"http:\/\/blog.benny-baumann.de\/?p=1072","title":{"rendered":"FizzBuzz BrainFuck"},"content":{"rendered":"<p>Well yeah, after <a href=\"http:\/\/www.delphi-forum.de\/user_Christian%20V..html\">some nasty person<\/a> dropped a link about <a href=\"http:\/\/www.codinghorror.com\/blog\/2007\/02\/why-cant-programmers-program.html\">why programmers are so bad at programming<\/a> I somehow got to have a look at the <a href=\"http:\/\/rosettacode.org\/wiki\/FizzBuzz#Brainf.2A.2A.2A\">Rosetta Code project&#8217;s site detailling this task<\/a> and found (not to my surprise) that noone had solved that task &#8212; yet! So I sat down and implemented it. Usually this task should take you only about a few minutes but since I hardly ever programm anything in BrainFuck it took me roughly 45 minutes to complete. But well: Here&#8217;s the result (Beware: Ugly code)!<!--more--><\/p>\n<pre lang=\"bf\" escaped=\"true\">FizzBuzz\r\n\r\nMemory:\r\n\u00a0 Zero\r\n\u00a0 Zero\r\n\u00a0 Counter 1\r\n\u00a0 Counter 2\r\n\r\n\u00a0 Zero\r\n\u00a0 ASCIIDigit 3\r\n\u00a0 ASCIIDigit 2\r\n\u00a0 ASCIIDigit 1\r\n\r\n\u00a0 Zero\r\n\u00a0 Digit 3\r\n\u00a0 Digit 2\u00a0\u00a0 \u00a0\r\n\u00a0 Digit 1\u00a0\u00a0 \u00a0\r\n\r\n\u00a0 CopyPlace\r\n\u00a0 Mod 3\r\n\u00a0 Mod 5\r\n\u00a0 PrintNumber\r\n\r\n\u00a0 TmpFlag\r\n\r\nCounters for the loop\r\n++++++++++[&gt;++++++++++[&gt;+&gt;+&lt;&lt;-]&lt;-]\r\n\r\nNumber representation in ASCII\r\n&gt;&gt;&gt;&gt;\r\n++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ [&gt;+&gt;+&gt;+&lt;&lt;&lt;-]\r\n&lt;&lt;&lt;&lt;\r\n\r\n&gt;&gt;\r\n[\r\n\u00a0\u00a0\u00a0 Do hundret times:\r\n\r\n\u00a0\u00a0\u00a0 Decrement counter\r\n\u00a0\u00a0\u00a0 -&gt;-&gt;\r\n\r\n\u00a0\u00a0\u00a0 Increment Number\r\n\u00a0\u00a0\u00a0 &gt; &gt;&gt;+&gt; \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt; &gt;&gt;+&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;&lt;&lt;&lt;\r\n\u00a0\u00a0\u00a0 &lt;&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0 Check for Overflow\r\n\u00a0\u00a0\u00a0 ++++++++++\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt; &gt;&gt;&gt;&gt;\r\n\u00a0\u00a0\u00a0 &gt;++++++++++&lt;\r\n\u00a0\u00a0\u00a0 [-&lt;&lt;&lt; &lt;&lt;&lt;&lt;-&gt;&gt;&gt;&gt; &gt;&gt;&gt; &gt;-&lt;]\r\n\u00a0\u00a0\u00a0 ++++++++++ \r\n\u00a0\u00a0\u00a0 &lt;&lt;&lt; &lt;&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0 Restore the digit\r\n\u00a0\u00a0\u00a0 [-&gt;&gt;&gt;&gt; &gt;&gt;&gt;-&lt;&lt;&lt; &lt;&lt;&lt;&lt;]\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt; [-]+ &gt;&gt;&gt;&gt;[&lt;&lt;&lt;&lt; - &gt;&gt;&gt;&gt;[-]]&lt;&lt;&lt;&lt; &lt;&lt;&lt;&lt; \r\n\r\n\u00a0\u00a0\u00a0 If there is an overflow\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt;[\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;&gt;&gt;----------&gt; &gt;&gt;&gt;----------&lt;+&lt;&lt; &lt;&lt;+&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Check for Overflow\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++++\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;&gt; &gt;&gt;&gt;&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;&gt;++++++++++&lt;&lt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-&lt;&lt; &lt;&lt;&lt;&lt;-&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;-&lt;&lt;]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++++ \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;&lt; &lt;&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Restore the digit\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-&gt;&gt;&gt;&gt; &gt;&gt;-&lt;&lt; &lt;&lt;&lt;&lt;]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt; [-]+ &gt;&gt;&gt;&gt;[&lt;&lt;&lt;&lt; - &gt;&gt;&gt;&gt;[-]]&lt;&lt;&lt;&lt; &lt;&lt;&lt;&lt; \r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 If there (again) is an overflow\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt;[\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;&lt;&lt;&lt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;&gt;----------&gt;&gt; &gt;&gt;----------&lt;+&lt; &lt;&lt;&lt;+&lt;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ]&lt;&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-]\r\n\u00a0\u00a0\u00a0 ]&lt;&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt; &gt;&gt;&gt;&gt; \r\n\r\n\u00a0\u00a0\u00a0 Set if to print the number\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt;[-]+&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0 Handle the Mod 3 counter\r\n\u00a0\u00a0\u00a0 [-]+++\r\n\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt;[-]+&lt;&lt;&lt;&lt;\r\n\u00a0\u00a0\u00a0 &gt;+[-&lt;-&gt;]+++&lt;\r\n\u00a0\u00a0\u00a0 [-&gt;-&gt;&gt;&gt;[-]&lt;&lt;&lt;&lt;]\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt;[\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;[-]&gt;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Print \"Fizz\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++ ++++++++ ++++++++ ++++++++\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++ ++++++++ ++++++++ ++++++++\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++.\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++ ++++++++ ++++++++ ++++++++\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 +++.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++ ++++++++ +..\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;&lt;&lt;---&gt;&gt;&gt;\r\n\u00a0\u00a0\u00a0 ]&lt;&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0 Handle the Mod 5 counter\r\n\u00a0\u00a0\u00a0 [-]+++++\r\n\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt;[-]+&lt;&lt;&lt;&lt;\r\n\u00a0\u00a0\u00a0 &gt;&gt;+[-&lt;&lt;-&gt;&gt;]+++++&lt;&lt;\r\n\u00a0\u00a0\u00a0 [-&gt;&gt;-&gt;&gt;[-]&lt;&lt;&lt;&lt;]\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt;&gt;[\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;[-]&gt;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Print \"Buzz\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++ ++++++++ ++++++++ ++++++++\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++ ++++++++ ++++++++ ++++++++\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++.\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++ ++++++++ ++++++++ ++++++++\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++++++++ ++++++++ +++.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 +++++..\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;&lt;-----&gt;&gt;\r\n\u00a0\u00a0\u00a0 ]&lt;&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0 Check if to print the number (Leading zeros)\r\n\u00a0\u00a0\u00a0 &gt;&gt;&gt;[\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;&lt;&lt; &lt;&lt;&lt;&lt; &lt;&lt;&lt;&lt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;.&gt;.&gt;.&lt;&lt;&lt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;&gt;&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-]\r\n\u00a0\u00a0\u00a0 ]&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0 &lt;&lt;&lt;&lt; &lt;&lt;&lt;&lt;\r\n\r\n\u00a0\u00a0\u00a0 Print New Line\r\n\u00a0\u00a0\u00a0 &lt;&lt;&lt;&lt;[-]++++ ++++ ++++ +.---.[-]&gt;&gt;\r\n]\r\n&lt;&lt;<\/pre>\n<p>I didn&#8217;t have a brainfuck interpreter at hand but I believe this should work. If it does not feel free to comment below pointing out the bugfixes. And I hope the documentation is appreciated; since that took extra time to write \ud83d\ude09<\/p>\n<p>Share and enjoy!<\/p>\n<p class=\"wp-flattr-button\"><a href=\"http:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=1072&amp;md5=0108a01e247df0c69246846bf273714c\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Well yeah, after some nasty person dropped a link about why programmers are so bad at programming I somehow got to have a look at the Rosetta Code project&#8217;s site detailling this task and found (not to my surprise) that noone had solved that task &#8212; yet! So I sat down and implemented it. Usually [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[6,3],"tags":[98,347,345],"class_list":["post-1072","post","type-post","status-publish","format-standard","hentry","category-fun","category-geshi","tag-developement","tag-fun","tag-geshi"],"_links":{"self":[{"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1072"}],"version-history":[{"count":3,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1072\/revisions"}],"predecessor-version":[{"id":1075,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1072\/revisions\/1075"}],"wp:attachment":[{"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1072"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}