контрольный номер двузначный обратный - PullRequest
0 голосов
/ 11 декабря 2019

Контрольный номер числа 347842: 3+4+7+8+4+2= 28=2+8+10= 1

Я хочу модель для разработки алгоритма, чтобы показать варианты этого контрольного числа для 2 чисел: (от 1 до 80)- Я приведу пример ниже для контрольной цифры, которая будет 1: 2, 3 и 15. (таким образом, контрольное число будет от 1 до 15 для 2 чисел. Алгоритм выполнит все числа, сгенерированные из 1-80 совпадений.

1 = 01, 10,

2 = 02, 11, 20,

3 = 03, 12, 21, 30,

15 = 06, 15, 69, 78 и так далее ...

и так далее ...

как я могу сделать алгоритм на основе этой представленной модели?

1 Ответ

1 голос
/ 11 декабря 2019

Вы можете сделать это в 2 шага:

  1. Рекурсивная функция, которая дает вам контрольный номер.
  2. Цикл, который находит все числа, соответствующие каждому контрольному номеру, и сохраняет их соответственно.

1

Private Function GetControlNumber(num As Integer) As Integer
    If num > 9 Then
        Dim sum As Integer = 0
        For Each car As Char In num.ToString
            sum += Asc(car) - 48 'numbers starts at 48 in the ascii chart
        Next

        Return GetControlNumber(sum)
    End If

    Return num
End Function

2

Private Sub StoreNumbers()
    Dim controlNumbers As New Dictionary(Of Integer, List(Of Integer))

    For i As Integer = 0 To 80
        Dim controlValue As Integer = GetControlNumber(i)

        If Not controlNumbers.ContainsKey(controlValue) Then
            'add the key if it hasn't been done yet
            controlNumbers.Add(controlValue, New List(Of Integer))
        End If

        'add the value to the right key
        controlNumbers(controlValue).Add(i)
    Next

    'proof of concept, you can get this off the algorithm once you verified your success
    For Each i As Integer In controlNumbers(1)
        Console.WriteLine(i.ToString)
    Next
End Sub

Веселись!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...