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 ;
10 [ "+" run-brainfuck ] must-infer
11 [ "+" get-brainfuck ] must-infer
15 { "Hello World!\n" } [
17 ++++++++++[>+++++++>++++++++++>+++>+<<<<-]
18 >++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
23 ! Addition (single-digit)
27 ",>++++++[<-------->-],[<+>-]<." get-brainfuck
31 ! Multiplication (single-digit)
36 ,>,>++++++++[<------<------>>-]
37 <<[>[>+>+<<-]>>[<<+>>-]<<<-]
38 >>>++++++[<++++++++>-],<.>.
43 ! Division (single-digit, integer)
48 ,>,>++++++[-<--------<-------->>]
52 [>]>>>[<[>>>-<<<[-]]>>]<<]
56 >[-]>>>>[-<<<<<+>>>>>]
57 <<<<++++++[-<++++++++>]<.
64 { "A" } [ "a\n" [ ",----------[----------------------.,----------]"
65 get-brainfuck ] with-string-reader ] unit-test
69 { "ABC" } [ "ABC\0" [ ",[.,]" get-brainfuck ] with-string-reader ] unit-test
71 ! Squares of numbers from 0 to 100
73 ${ 100 [0,b] [ dup * number>string ] map "\n" join "\n" append }
76 ++++[>+++++<-]>[<+++++>-]+<+[
77 >[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+
78 >>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]
79 <<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>
80 [-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
84 ! fun with numbers: 2 + 2 = 5