mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
add .b Brainfuck sample
This commit is contained in:
195
samples/Brainfuck/factor.b
Normal file
195
samples/Brainfuck/factor.b
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
* factor an arbitrarily large positive integer
|
||||||
|
*
|
||||||
|
* Copyright (C) 1999 by Brian Raiter
|
||||||
|
* under the GNU General Public License
|
||||||
|
|
||||||
|
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>-
|
||||||
|
|
||||||
|
*
|
||||||
|
* read in the number
|
||||||
|
*
|
||||||
|
|
||||||
|
<<<<<<<<<+
|
||||||
|
[-[>>>>>>>>>>][-]<<<<<<<<<<[[->>>>>>>>>>+<<<<<<<<<<]<<<<<<<<<<]
|
||||||
|
>>>>>>>>>>,----------]
|
||||||
|
>>>>>>>>>>[------------------------------------->>>>>>>>>->]
|
||||||
|
<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]-
|
||||||
|
|
||||||
|
*
|
||||||
|
* display the number and initialize the loop variable to two
|
||||||
|
*
|
||||||
|
|
||||||
|
[>++++++++++++++++++++++++++++++++++++++++++++++++.
|
||||||
|
------------------------------------------------<<<<<<<<<<<]
|
||||||
|
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
|
||||||
|
--------------------------.[-]
|
||||||
|
>>>>>>>>>>>>++<<<<+
|
||||||
|
|
||||||
|
*
|
||||||
|
* the main loop
|
||||||
|
*
|
||||||
|
|
||||||
|
[ [-]>>
|
||||||
|
|
||||||
|
*
|
||||||
|
* make copies of the number and the loop variable
|
||||||
|
*
|
||||||
|
|
||||||
|
[>>>>[-]>[-]>[-]>[-]
|
||||||
|
>[-]>[-]
|
||||||
|
<<<<<<<[->>>+>+<<<<]>>>>>>>>]
|
||||||
|
<<<<<<<<<<[>>>>>>[-<<<<+>>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
[>[->>>+>>+<<<<<]>>>>>>>>>]
|
||||||
|
<<<<<<<<<<[>>>>>>[-<<<<<+>>>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
|
||||||
|
*
|
||||||
|
* divide the number by the loop variable
|
||||||
|
*
|
||||||
|
|
||||||
|
[>>>[-]>>>[-]>[-]>>>] initialize
|
||||||
|
<<<<<<<<<<[<<<<<<<<<<]
|
||||||
|
>>>>>>>>>[-]>>>>>>>+<<<<<<<<[+]+
|
||||||
|
[ ->> double divisor until above dividend
|
||||||
|
[>>>>>>[->++<]>>>>]<<<<<<<<<<
|
||||||
|
[>>>>>>>>[-]>[-]
|
||||||
|
<<<<[->>>++<<<]<<<<<<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
[>>>>>>>>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<
|
||||||
|
[->--------->>>>>>>>>+<<<<<<<<<<[->+<]]]]]]]]]]]>>]
|
||||||
|
<<<<<<<<<<[>>>>>>>>>[-<+<<<+>>>>]<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
[>>>>>>>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>
|
||||||
|
[-<--------->>>>>>>>>>>+<<<<<<<<<<[-<+>]]]]]]]]]]]>>>]
|
||||||
|
<<<<<<<<<<
|
||||||
|
[>>>>[->>>+>>+<<<<<]<<<<<<<<<<<<<<]
|
||||||
|
>>>>>>>>>>[>>>>>>>[-<<<+>>>]>>>]<<<<<<<<<<
|
||||||
|
[>>>>>>>>[->-<]>
|
||||||
|
[<<<<<<<<<[<[-]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<]
|
||||||
|
>>>>>>>>>>>>>>>>>>>]
|
||||||
|
<<<<<<<<<<<<<<<<<<<]
|
||||||
|
>>>>>>>>>[+[+[+[+[+[+[+[+[+[+[[-]<+>]]]]]]]]]]]<
|
||||||
|
]
|
||||||
|
>>>>>>>>
|
||||||
|
[ subtract divisor from dividend
|
||||||
|
<<<<<<
|
||||||
|
[>>>>>>>>[-]>[-]<<<<<[->>>+>+<<<<]>>>>>>]<<<<<<<<<<
|
||||||
|
[>>>>>>>>[-<<<<+>>>>]<<<[->>>+>+<<<<]<<<<<<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
[>>>>>>>>>[-<<<<+>>>>]>]<<<<<<<<<<
|
||||||
|
[>>>>>>>>[-<->]<<<<<<<<<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
[>>>>>>>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<
|
||||||
|
[++++++++++[+>-<]>>>>>>>>>>-<<<<<<<<<<]]]]]]]]]]]>>>]
|
||||||
|
>>>>>>>+
|
||||||
|
[ if difference is nonnegative then
|
||||||
|
[-]<<<<<<<<<<<<<<<<< replace dividend and increment quotient
|
||||||
|
[>>>>[-]>>>>[-<<<<+>>>>]<<[->>+<<]<<<<<<<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
[>>>>>>>>[->+<<<+>>]>>]<<<<<<<<<<
|
||||||
|
[>>>[->>>>>>+<<<<<<]<<<<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
[>>>>>>>>>[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
|
||||||
|
[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
|
||||||
|
[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
|
||||||
|
[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
|
||||||
|
[-<<<<<<+>>>>>>[-<<<<<<--------->>>>>>>>>>>>>>>>+<<<<<<<<<<
|
||||||
|
[-<<<<<<+>>>>>>]]]]]]]]]]]>]
|
||||||
|
>>>>>>>
|
||||||
|
] halve divisor and loop until zero
|
||||||
|
<<<<<<<<<<<<<<<<<[<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
[>>>>>>>>[-]<<[->+<]<[->>>+<<<]>>>>>]<<<<<<<<<<
|
||||||
|
[+>>>>>>>[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
|
||||||
|
[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
|
||||||
|
[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
|
||||||
|
[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
|
||||||
|
[-<<<<<<<+>>>>>>>]]]]]]]]]<<<<<<<
|
||||||
|
[->>>>>>>+<<<<<<<]-<<<<<<<<<<]
|
||||||
|
>>>>>>>
|
||||||
|
[-<<<<<<<<<<<+>>>>>>>>>>>]
|
||||||
|
>>>[>>>>>>>[-<<<<<<<<<<<+++++>>>>>>>>>>>]>>>]<<<<<<<<<<
|
||||||
|
[+>>>>>>>>[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
|
||||||
|
[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
|
||||||
|
[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
|
||||||
|
[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
|
||||||
|
[-<<<<<<<<+>>>>>>>>]]]]]]]]]<<<<<<<<
|
||||||
|
[->>>>>>>>+<<<<<<<<]-<<<<<<<<<<]
|
||||||
|
>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]>>
|
||||||
|
[>>>>>>>>[-<<<<<<<<<<<<<+++++>>>>>>>>>>>>>]>>]<<<<<<<<<<
|
||||||
|
[<<<<<<<<<<]>>>>>>>>>>
|
||||||
|
>>>>>>
|
||||||
|
]
|
||||||
|
<<<<<<
|
||||||
|
|
||||||
|
*
|
||||||
|
* make copies of the loop variable and the quotient
|
||||||
|
*
|
||||||
|
|
||||||
|
[>>>[->>>>+>+<<<<<]>>>>>>>]
|
||||||
|
<<<<<<<<<<
|
||||||
|
[>>>>>>>[-<<<<+>>>>]<<<<<[->>>>>+>>+<<<<<<<]<<<<<<<<<<<<]
|
||||||
|
>>>>>>>>>>[>>>>>>>[-<<<<<+>>>>>]>>>]<<<<<<<<<<
|
||||||
|
|
||||||
|
*
|
||||||
|
* break out of the loop if the quotient is larger than the loop variable
|
||||||
|
*
|
||||||
|
|
||||||
|
[>>>>>>>>>[-<->]<
|
||||||
|
[<<<<<<<<
|
||||||
|
[<<[-]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]<<<<<<<<<<<<<<<<<<]
|
||||||
|
>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<]
|
||||||
|
>>>>>>>>[>-<[+[+[+[+[+[+[+[+[+[[-]>+<]]]]]]]]]]]>+
|
||||||
|
|
||||||
|
[ [-]
|
||||||
|
|
||||||
|
*
|
||||||
|
* partially increment the loop variable
|
||||||
|
*
|
||||||
|
|
||||||
|
<[-]+>>>>+>>>>>>>>[>>>>>>>>>>]<<<<<<<<<<
|
||||||
|
|
||||||
|
*
|
||||||
|
* examine the remainder for nonzero digits
|
||||||
|
*
|
||||||
|
|
||||||
|
[<<<<<<[<<<<[<<<<<<<<<<]>>>>+<<<<<<<<<<]<<<<]
|
||||||
|
>>>>>>>>>>>>>>>>>>>>[>>>>>>>>>>]<<<<<<<<<<[<<<<<<<<<<]
|
||||||
|
>>>>-
|
||||||
|
|
||||||
|
[ [+]
|
||||||
|
|
||||||
|
*
|
||||||
|
* decrement the loop variable and replace the number with the quotient
|
||||||
|
*
|
||||||
|
|
||||||
|
>>>>>>>>-<<[>[-]>>[-<<+>>]>>>>>>>]<<<<<<<<<<
|
||||||
|
|
||||||
|
*
|
||||||
|
* display the loop variable
|
||||||
|
*
|
||||||
|
|
||||||
|
[+>>[>>>>>>>>+>>]<<-<<<<<<<<<<]-
|
||||||
|
[>>++++++++++++++++++++++++++++++++++++++++++++++++.
|
||||||
|
------------------------------------------------<<<<<<<<<<<<]
|
||||||
|
++++++++++++++++++++++++++++++++.[-]>>>>
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
*
|
||||||
|
* normalize the loop variable
|
||||||
|
*
|
||||||
|
|
||||||
|
>>>>>>
|
||||||
|
[>>[->>>>>+<<<<<[->>>>>+<<<<<
|
||||||
|
[->>>>>+<<<<<[->>>>>+<<<<<
|
||||||
|
[->>>>>+<<<<<[->>>>>+<<<<<
|
||||||
|
[->>>>>+<<<<<[->>>>>+<<<<<
|
||||||
|
[->>>>>+<<<<<[->>>>>--------->>>>>+<<<<<<<<<<
|
||||||
|
[->>>>>+<<<<<]]]]]]]]]]]>>>>>>>>]
|
||||||
|
<<<<<<<<<<[>>>>>>>[-<<<<<+>>>>>]<<<<<<<<<<<<<<<<<]
|
||||||
|
>>>>>>>>>
|
||||||
|
|
||||||
|
]<
|
||||||
|
|
||||||
|
]>>
|
||||||
|
|
||||||
|
*
|
||||||
|
* display the number and end
|
||||||
|
*
|
||||||
|
|
||||||
|
[>>>>>>>>>>]<<<<<<<<<<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]-
|
||||||
|
[>++++++++++++++++++++++++++++++++++++++++++++++++.<<<<<<<<<<<]
|
||||||
|
++++++++++.
|
||||||
Reference in New Issue
Block a user