1 | >,[
|
---|
2 | [
|
---|
3 | ----------[
|
---|
4 | >>>[>>>>]+[[-]+<[->>>>++>>>>+[>>>>]++[->+<<<<<]]<<<]
|
---|
5 | ++++++[>------<-]>--[>>[->>>>]+>+[<<<<]>-],<
|
---|
6 | ]>
|
---|
7 | ]>>>++>+>>[
|
---|
8 | <<[>>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<<]]<[>+<-]>]
|
---|
9 | >[>[>>>>]+[[-]<[+[->>>>]>+<]>[<+>[<<<<]]+<<<<]>>>[->>>>]+>+[<<<<]]
|
---|
10 | >[[>+>>[<<<<+>>>>-]>]<<<<[-]>[-<<<<]]>>>>>>>
|
---|
11 | ]>>+[[-]++++++>>>>]<<<<[[<++++++++>-]<.[-]<[-]<[-]<]<,
|
---|
12 | ]
|
---|
13 |
|
---|
14 | [The Collatz problem or 3n+1 problem is as follows. Take a natural number n.
|
---|
15 | If it's even, halve it; if odd, triple it and add one. Repeat the process with
|
---|
16 | the resulting number, and continue indefinitely. If n is 0, the resulting
|
---|
17 | sequence is 0, 0, 0, 0... It is conjectured but not proven that for any
|
---|
18 | positive integer n, the resulting sequence will end in 1, 4, 2, 1...
|
---|
19 | See also http://www.research.att.com/projects/OEIS?Anum=A006577
|
---|
20 |
|
---|
21 | This program takes a series of decimal numbers, followed by linefeeds (10).
|
---|
22 | The entire series is terminated by an EOF (0 or "no change"). For each number
|
---|
23 | input, the program outputs, in decimal, the number of steps from that number
|
---|
24 | to zero or one, when following the rule above. It's quite fast; on a Sun
|
---|
25 | machine, it took three seconds for a random 640-digit number.
|
---|
26 |
|
---|
27 | One more note. This program was originally written for Tristan Parker's
|
---|
28 | Brainfuck Texas Holdem contest, and won by default (it was the only entry);
|
---|
29 | the version I submitted before the contest deadline is at
|
---|
30 | http://www.hevanet.com/cristofd/brainfuck/oldcollatz.b
|
---|
31 |
|
---|
32 | Daniel B Cristofani (cristofdathevanetdotcom)
|
---|
33 | http://www.hevanet.com/cristofd/brainfuck/]
|
---|