fork download
  1. function brainfuck(code)
  2. stack = zeros(100, 1);
  3. stack_ptr = 0;
  4. tape_length = 30000;
  5. tape = zeros(tape_length, 1);
  6. pointer = 1;
  7. i = 1;
  8. while i <= length(code)
  9. switch code(i)
  10. case '>'
  11. pointer = pointer + 1;
  12. if pointer > tape_length
  13. pointer = 1;
  14. end
  15. case '<'
  16. pointer = pointer - 1;
  17. if pointer == 0
  18. pointer = tape_length;
  19. end
  20. case '+'
  21. tape(pointer) = tape(pointer) + 1;
  22. case '-'
  23. tape(pointer) = tape(pointer) - 1;
  24. case '.'
  25. fprintf(char(tape(pointer)));
  26. case ','
  27.  
  28. case '['
  29. if tape(pointer) == 0
  30. i = closing(i, code);
  31. else
  32. stack_ptr = stack_ptr + 1;
  33. stack(stack_ptr) = i;
  34. end
  35. case ']'
  36. i = stack(stack_ptr) - 1;
  37. stack_ptr = stack_ptr - 1;
  38. end
  39. i = i + 1;
  40. end
  41. end
  42.  
  43. function i = closing(j, code)
  44. diff = 0;
  45. for i = j:length(code)
  46. if code(i) == '['
  47. diff = diff + 1;
  48. elseif code(i) == ']'
  49. diff = diff - 1;
  50. end
  51. if diff == 0
  52. break;
  53. end
  54. end
  55. end
  56.  
  57. helloworld = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.";
  58.  
  59. sierpinski = ">++++[<++++++++>-]>++++++++[>++++<-]>>++>>>+>>>+<<<<<<<<<<[-[->+<]>[-<+>>>.<<]>>>[[->++++++++[>++++<-]>.<<[->+<]+>[->++++++++++<<+>]>.[-]>]]+<<<[-[->+<]+>[-<+>>>-[->+<]++>[-<->]<<<]<<<<]++++++++++.+++.[-]<]+++++";
  60.  
  61. fibonacci = "+++++++++++>+>>>>++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[-<-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<-]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<+>>[-]]<<<<<<<]>>>>>[++++++++++++++++++++++++++++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++++++++++++++++++++++++++++++++++++++++++++++.[-]<<<<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<[-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]";
  62.  
  63. brainfuck(helloworld);
  64. fprintf "\n";
  65. brainfuck(fibonacci);
  66. fprintf "\n";
  67. brainfuck(sierpinski);
  68.  
Success #stdin #stdout 11.59s 65344KB
stdin
Standard input is empty
stdout
Hello World!

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
                                *    

                               * *    

                              *   *    

                             * * * *    

                            *       *    

                           * *     * *    

                          *   *   *   *    

                         * * * * * * * *    

                        *               *    

                       * *             * *    

                      *   *           *   *    

                     * * * *         * * * *    

                    *       *       *       *    

                   * *     * *     * *     * *    

                  *   *   *   *   *   *   *   *    

                 * * * * * * * * * * * * * * * *    

                *                               *    

               * *                             * *    

              *   *                           *   *    

             * * * *                         * * * *    

            *       *                       *       *    

           * *     * *                     * *     * *    

          *   *   *   *                   *   *   *   *    

         * * * * * * * *                 * * * * * * * *    

        *               *               *               *    

       * *             * *             * *             * *    

      *   *           *   *           *   *           *   *    

     * * * *         * * * *         * * * *         * * * *    

    *       *       *       *       *       *       *       *    

   * *     * *     * *     * *     * *     * *     * *     * *    

  *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *    

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *