def _calculate_check_digit(character_values):
    """
    Computes the check digit based on a modulus 103 checksum,
    the algorithm is quite simple, the idea is to weight the
    value of each position over its own index position.

    :type character_values: List
    :param character_values: The list of character values to
    calculate the check digit (checksum).
    :rtype: int
    :return: The resulting check digit for the provided set
    of character values.
    """
    checksum = character_values[0]
    remaining_values = character_values[1:]
    remaining_values_length = len(remaining_values)
    for index in range(remaining_values_length):
        value = remaining_values[index]
        weighted_value = value * (index + 1)
        checksum += weighted_value
    check_digit = checksum % 103
    return check_digit
