Home > Software design >  decreased digits of a numbers until get one-digit number
decreased digits of a numbers until get one-digit number

Time:11-13

I tried to make a function that would subtract from a number, for example number 25, to display the result 3 (because 5-2=3) - the smallest is subtracted from the large number - while the numbers from 1 to 9 will remain the same so it will take into account only what is of 2 digits. unfortunately I kind of failed in my attempt and I would need a little help.

Dim lines As String() = originalString.Split(CChar(Environment.NewLine))

            For Each line As String In lines

                Dim lineSum As String = 0
                Dim index As Integer = 0
                Dim numchars1 As Char
                Dim numchars2 As Char

                For Each numberChar As Char In line

                    index  = 1

                    If index = 1 Then
                        numchars1 = numberChar
                    End If

                    If index >= 2 Then
                        numchars2 = numberChar
                    End If

                Next

                If Val(numchars1) AndAlso Val(numchars2) > 0 Then

                    If Val(numchars2) > Val(numchars1) Then

                        lineSum = Val(numchars2) - Val(numchars1)

                    ElseIf Val(numchars1) > Val(numchars2) Then

                        lineSum = Val(numchars1) - Val(numchars2)

                    End If

                Else

                    lineSum = numchars1

                End If

CodePudding user response:

You can use this approach:

Public Shared Function Subtract(number As String) As Int32?
    If Not number.All(AddressOf Char.IsDigit) Then Return Nothing
    Dim allNumbers As Int32() = number.Select(Function(c) CInt(Char.GetNumericValue(c))).ToArray()
    Dim highest = allNumbers.Max()
    Return highest - (allNumbers.Sum() - highest)
End Function

Note that the result of "555" will be -5, because 5 - 5 - 5

  • Related