diff options
| author | 2022-08-17 10:31:47 +0200 | |
|---|---|---|
| committer | 2022-08-17 10:31:47 +0200 | |
| commit | d378b8c2bc4b3896e0041bd1c48407800a088ef3 (patch) | |
| tree | a095eebc5557adc13b72194fb105113b5ba5acd6 | |
| parent | 6e30b8a913caf1817d7e9bd0bb9783d9f7aa1ed1 (diff) | |
collatz
| -rw-r--r-- | examples/collatz.cff | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/examples/collatz.cff b/examples/collatz.cff new file mode 100644 index 0000000..65b504a --- /dev/null +++ b/examples/collatz.cff @@ -0,0 +1,28 @@ +import "libc.hff"; + +extern fn main() void { + let mem *int = malloc(sizeof int * 4000); + + let cmax = 0; + for let nv = 1; nv < 1000; ++nv { + let n = nv, + c = 0; + while n != 1 { + if n < nv { + c += mem[n]; + break; + } + if (n & 1) != 0 { + n = (3 * n) + 1; + } else { + n /= 2; + } + ++c; + } + mem[nv] = c; + if c > cmax { + cmax = c; + } + } + printf("should print 178: %d\n", cmax); +} |