1 ! Copyright (C) 2009 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
4 USING: brainfuck io.streams.string kernel literals math
5 math.parser math.ranges sequences tools.test ;
7 [ "+" run-brainfuck ] must-infer
8 [ "+" get-brainfuck ] must-infer
12 { "Hello World!\n" } [
14 ++++++++++[>+++++++>++++++++++>+++>+<<<<-]
15 >++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
20 ! Addition (single-digit)
24 ",>++++++[<-------->-],[<+>-]<." get-brainfuck
28 ! Multiplication (single-digit)
33 ,>,>++++++++[<------<------>>-]
34 <<[>[>+>+<<-]>>[<<+>>-]<<<-]
35 >>>++++++[<++++++++>-],<.>.
40 ! Division (single-digit, integer)
45 ,>,>++++++[-<--------<-------->>]
49 [>]>>>[<[>>>-<<<[-]]>>]<<]
53 >[-]>>>>[-<<<<<+>>>>>]
54 <<<<++++++[-<++++++++>]<.
61 { "A" } [ "a\n" [ ",----------[----------------------.,----------]"
62 get-brainfuck ] with-string-reader ] unit-test
66 { "ABC" } [ "ABC\0" [ ",[.,]" get-brainfuck ] with-string-reader ] unit-test
68 ! Squares of numbers from 0 to 100
70 ${ 100 [0,b] [ dup * number>string ] map "\n" join "\n" append }
73 ++++[>+++++<-]>[<+++++>-]+<+[
74 >[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+
75 >>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]
76 <<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>
77 [-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
81 ! fun with numbers: 2 + 2 = 5