Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
58
Task/Taxicab-numbers/Visual-Basic-.NET/taxicab-numbers.vb
Normal file
58
Task/Taxicab-numbers/Visual-Basic-.NET/taxicab-numbers.vb
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
Imports System.Text
|
||||
|
||||
Module Module1
|
||||
|
||||
Function GetTaxicabNumbers(length As Integer) As IDictionary(Of Long, IList(Of Tuple(Of Integer, Integer)))
|
||||
Dim sumsOfTwoCubes As New SortedList(Of Long, IList(Of Tuple(Of Integer, Integer)))
|
||||
|
||||
For i = 1 To Integer.MaxValue - 1
|
||||
For j = 1 To Integer.MaxValue - 1
|
||||
Dim sum = CLng(Math.Pow(i, 3) + Math.Pow(j, 3))
|
||||
|
||||
If Not sumsOfTwoCubes.ContainsKey(sum) Then
|
||||
sumsOfTwoCubes.Add(sum, New List(Of Tuple(Of Integer, Integer)))
|
||||
End If
|
||||
|
||||
sumsOfTwoCubes(sum).Add(Tuple.Create(i, j))
|
||||
|
||||
If j >= i Then
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
REM Found that you need to keep going for a while after the length, because higher i values fill in gaps
|
||||
If sumsOfTwoCubes.AsEnumerable.Count(Function(t) t.Value.Count >= 2) >= length * 1.1 Then
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
Dim values = (From t In sumsOfTwoCubes Where t.Value.Count >= 2 Select t) _
|
||||
.Take(2006) _
|
||||
.ToDictionary(Function(u) u.Key, Function(u) u.Value)
|
||||
Return values
|
||||
End Function
|
||||
|
||||
Sub PrintTaxicabNumbers(values As IDictionary(Of Long, IList(Of Tuple(Of Integer, Integer))))
|
||||
Dim i = 1
|
||||
For Each taxicabNumber In values.Keys
|
||||
Dim output As New StringBuilder
|
||||
output.AppendFormat("{0,10}" + vbTab + "{1,4}", i, taxicabNumber)
|
||||
|
||||
For Each numbers In values(taxicabNumber)
|
||||
output.AppendFormat(vbTab + "= {0}^3 + {1}^3", numbers.Item1, numbers.Item2)
|
||||
Next
|
||||
|
||||
If i <= 25 OrElse (i >= 2000 AndAlso i <= 2006) Then
|
||||
Console.WriteLine(output.ToString)
|
||||
End If
|
||||
|
||||
i += 1
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Sub Main()
|
||||
Dim taxicabNumbers = GetTaxicabNumbers(2006)
|
||||
PrintTaxicabNumbers(taxicabNumbers)
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
Loading…
Add table
Add a link
Reference in a new issue