User:None1/BF
Jump to navigation
Jump to search
Some brainfuck programs I wrote (this is a copy of my brainfuck programs at GitHub).
Kolakoski sequence
This outputs the Kolakoski sequence, as the sequence is infinitely long, the program never terminates.
+++++++[>+++++++<-]>.+..-..[-] ; Print out "12211" +>>>>++>>>>++>>>>+>+>>>+>>+<<<<<<<<<<<<<<<<<<< ; Store 1 2 2 1 1 ; s^ f^ +[ ; Infinite loop >>-[+>>>>-]+ ; Go to the slow pointer <[ >>-[+>>>>-]+ ; Go to the fast pointer >>[>>>>]+++ ; Set top value to 3 <<-[+<<<<-]+ ; Go back to the fast pointer <<[>>>+>[>>>>]<<<<-<<-[+<<<<-]+<<-] ; Set top value to 3 minus fast pointer value >>>[<<<+>>>-] ; Restore fast pointer value <<<[>>>>]<<<++++++[<++++++++>-]<. ; Output top value as character >++++++[<-------->-] ; Restore to number -[+<<<<-]+<- ; Decrement slow pointer value ] >>>[<<<+>>>-] ; Restore slow pointer value <-[+>>>>-]+ ; Go to the fast pointer [>>[>>>>]<<+<<<<-[+<<<<-]] ; Move fast pointer to top <-[+<<<<-]+[>>>>+<<<<-] ; Move slow pointer to the next >>-[+<<<<-]+ ; Move back to infinite loop flag ]
The minimized version is like this:
+++++++[>+++++++<-]>.+..-..[-]+>>>>++>>>>++>>>>+>+>>>+>>+<<<<<<<<<<<<<<<<<<<+[>>-[+>>>>-]+<[>>-[+>>>>-]+>>[>>>>]+++<<-[+<<<<-]+<<[>>>+>[>>>>]<<<<-<<-[+<<<<-]+<<-]>>>[<<<+>>>-]<<<[>>>>]<<<++++++[<++++++++>-]<.>++++++[<-------->-]-[+<<<<-]+<-]>>>[<<<+>>>-]<-[+>>>>-]+[>>[>>>>]<<+<<<<-[+<<<<-]]<-[+<<<<-]+[>>>>+<<<<-]>>-[+<<<<-]+]
Random number generator
An RNG that uses this generator: f[i]=(f[i-1]+f[i-2]+f[i-3])%251, f[-2]=f[-1]=f[0]=1. Its period is 63253. Generates characters from 0 to 250.
[ Simple RNG that uses this generator: f[i]=(f[i-1]+f[i-2]+f[i-3])%251, f[-2]=f[-1]=f[0]=1. Its period is 63253. Generates characters from 0 to 250.] +>>+>>+>+ ; Initialize the first three terms and the infinite loop flag [ ; Infinite loop >>>++++++++++++++[<++++++++++++++++++>-]<-<< ; Initialize 251 (the divisor) -<[>>+[>->+<[>]>[<+>-]<<[<]>-]>>[<+<+>>-]>+<<<<<-]>>>>>[<<<<<+>>>>>-] ; Add the previous term using modulus algorithm <<<<< <<[>>>>+[>->+<[>]>[<+>-]<<[<]>-]>>[<+<+>>-]>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-] ; Add the term before previous term using modulus algorithm <<<<<<< <<[>>>>>>+[>->+<[>]>[<+>-]<<[<]>-]>>[<+<+>>-]>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>>-] ; Add the term before the term before previous term using modulus algorithm <<<.>[-]+ ; Move to infinite loop flag ]
The minimized version is like this:
+>>+>>+>+[>>>++++++++++++++[<++++++++++++++++++>-]<-<<-<[>>+[>->+<[>]>[<+>-]<<[<]>-]>>[<+<+>>-]>+<<<<<-]>>>>>[<<<<<+>>>>>-]<<<<<<<[>>>>+[>->+<[>]>[<+>-]<<[<]>-]>>[<+<+>>-]>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<<<<<<<<<[>>>>>>+[>->+<[>]>[<+>-]<<[<]>-]>>[<+<+>>-]>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>>-]<<<.>[-]+]