Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
42
Task/Pascals-triangle/Visual-Basic-.NET/pascals-triangle.vb
Normal file
42
Task/Pascals-triangle/Visual-Basic-.NET/pascals-triangle.vb
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
Imports System.Numerics
|
||||
|
||||
Module Module1
|
||||
Iterator Function GetRow(rowNumber As BigInteger) As IEnumerable(Of BigInteger)
|
||||
Dim denominator As BigInteger = 1
|
||||
Dim numerator = rowNumber
|
||||
|
||||
Dim currentValue As BigInteger = 1
|
||||
For counter = 0 To rowNumber
|
||||
Yield currentValue
|
||||
currentValue = currentValue * numerator
|
||||
numerator = numerator - 1
|
||||
currentValue = currentValue / denominator
|
||||
denominator = denominator + 1
|
||||
Next
|
||||
End Function
|
||||
|
||||
Function GetTriangle(quantityOfRows As Integer) As IEnumerable(Of BigInteger())
|
||||
Dim range = Enumerable.Range(0, quantityOfRows).Select(Function(num) New BigInteger(num))
|
||||
Return range.Select(Function(num) GetRow(num).ToArray())
|
||||
End Function
|
||||
|
||||
Function CenterString(text As String, width As Integer)
|
||||
Dim spaces = width - text.Length
|
||||
Dim padLeft = (spaces / 2) + text.Length
|
||||
Return text.PadLeft(padLeft).PadRight(width)
|
||||
End Function
|
||||
|
||||
Function FormatTriangleString(triangle As IEnumerable(Of BigInteger())) As String
|
||||
Dim maxDigitWidth = triangle.Last().Max().ToString().Length
|
||||
Dim rows = triangle.Select(Function(arr) String.Join(" ", arr.Select(Function(array) CenterString(array.ToString(), maxDigitWidth))))
|
||||
Dim maxRowWidth = rows.Last().Length
|
||||
Return String.Join(Environment.NewLine, rows.Select(Function(row) CenterString(row, maxRowWidth)))
|
||||
End Function
|
||||
|
||||
Sub Main()
|
||||
Dim triangle = GetTriangle(20)
|
||||
Dim output = FormatTriangleString(triangle)
|
||||
Console.WriteLine(output)
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
Loading…
Add table
Add a link
Reference in a new issue