Hier mal meine Lösung von 2010.
AutoIt
;~ 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.
$maxlength = 0
$savedValue = 0
For $i = 2 To 1000000
$length = 1
$value = $i
While $value > 1
;ConsoleWrite($value & " -> ")
If Mod($value,2) = 0 Then
$value /= 2
$length += 1
Else
$value = $value * 3 + 1
$length += 1
EndIf
WEnd
If $length > $maxlength Then
$maxlength = $length
$savedValue = $i
EndIf
;ConsoleWrite("1" & @CRLF)
Next
ConsoleWrite($savedValue & @CRLF)
Alles anzeigen