From 3c06b19032a0184c0b3ad1ea352becb5d60c9e6a Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Tue, 22 Jun 2021 20:54:23 +0200 Subject: problem 13 14 in julia --- julia/014-longest_collatz_sequence.jl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 julia/014-longest_collatz_sequence.jl (limited to 'julia/014-longest_collatz_sequence.jl') diff --git a/julia/014-longest_collatz_sequence.jl b/julia/014-longest_collatz_sequence.jl new file mode 100644 index 0000000..1edaf98 --- /dev/null +++ b/julia/014-longest_collatz_sequence.jl @@ -0,0 +1,24 @@ +### +# Longest Collatz sequence +# Problem 14 +# +# The following iterative sequence is defined for the set of positive integers: +# n → n/2 (n is even)n → 3n + 1 (n is odd) +# Using the rule above and starting with 13, we generate the following sequence: +# 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 +# It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. +# Although it has not been proved yet (Collatz Problem), it is thought that all starting +# numbers finish at 1. +# Which starting number, under one million, produces the longest chain? +# NOTE: Once the chain starts the terms are allowed to go above one million. +### + +function collatz_length(n) + n == 1 && return 1 + n % 2 == 0 && return 1 + collatz_length(n ÷ 2) + return 1 + collatz_length(3n + 1) +end + +result = argmax([collatz_length(x) for x in 1:(1_000_000 - 1)]) + +println(result) -- cgit