43 lines
1.2 KiB
VB.net
43 lines
1.2 KiB
VB.net
Module HailstoneSequence
|
|
Sub Main()
|
|
' Checking sequence of 27.
|
|
|
|
Dim l As List(Of Long) = HailstoneSequence(27)
|
|
Console.WriteLine("27 has {0} elements in sequence:", l.Count())
|
|
|
|
For i As Integer = 0 To 3 : Console.Write("{0}, ", l(i)) : Next
|
|
Console.Write("... ")
|
|
For i As Integer = l.Count - 4 To l.Count - 1 : Console.Write(", {0}", l(i)) : Next
|
|
|
|
Console.WriteLine()
|
|
|
|
' Finding longest sequence for numbers below 100000.
|
|
|
|
Dim max As Integer = 0
|
|
Dim maxCount As Integer = 0
|
|
|
|
For i = 1 To 99999
|
|
l = HailstoneSequence(i)
|
|
If l.Count > maxCount Then
|
|
max = i
|
|
maxCount = l.Count
|
|
End If
|
|
Next
|
|
Console.WriteLine("Max elements in sequence for number below 100k: {0} with {1} elements.", max, maxCount)
|
|
Console.ReadLine()
|
|
End Sub
|
|
|
|
Private Function HailstoneSequence(ByVal n As Long) As List(Of Long)
|
|
Dim valList As New List(Of Long)()
|
|
valList.Add(n)
|
|
|
|
Do Until n = 1
|
|
n = IIf(n Mod 2 = 0, n / 2, (3 * n) + 1)
|
|
valList.Add(n)
|
|
Loop
|
|
|
|
Return valList
|
|
End Function
|
|
|
|
End Module
|