def vin_validator(vin):
    """
    function that validates VIN value using check-digit calculation
    following ISO 3779:2009 standard specification.
    Check-digit validation is compulsory for all road vehicles sold in North America.
    :param vin: VIN code
    :return: boolean value per validated VIN
    """
    def transliterate(c):
        return '0123456789.ABCDEFGH..JKLMN.P.R..STUVWXYZ'.index(c) % 10

    def check_digit(_vin):
        _map = '0123456789X'
        weights = '8765432X098765432'
        _sum = 0
        for i in range(0, 17):
            _sum += transliterate(_vin[i]) * _map.index(weights[i])
        return _map[_sum % 11]

    if len(vin) != 17:
        return False

    return check_digit(vin) == vin[8]