Sha256: c5bec9d46ac2b927d68784b2bf2a68ca6452539df482069e3b09b3f122327a42

Contents?: true

Size: 1.05 KB

Versions: 332

Compression:

Stored size: 1.05 KB

Contents

using System;
using System.Linq;

public static class Luhn
{
    public static bool IsValid(string number)
    {
        number = number.Replace(" ", "");

        if (number.Length < 2 || number.Any(c => c < '0' || c > '9'))
        {
            return false;
        }

        var checksum = GenerateChecksum(number);

        return checksum % 10 == 0;
    }

    private static int GenerateChecksum(string number)
    {
        var reversedIntArray = SplitToReversedIntArray(number);
        for (int i = 1; i < reversedIntArray.Length; i++)
        {
            if (i % 2 != 0)
                reversedIntArray[i] = ConvertDigitForAddend(reversedIntArray[i]);
        }
        Array.Reverse(reversedIntArray);
        return reversedIntArray.Sum();
    }

    private static int[] SplitToReversedIntArray(string value)
    {
        return value.Select(c => int.Parse(c.ToString())).Reverse().ToArray();
    }

    private static int ConvertDigitForAddend(int value)
    {
        var doubled = value * 2;
        return doubled < 10 ? doubled : doubled - 9;
    }
}

Version data entries

332 entries across 332 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.179 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.178 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.177 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.176 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.175 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.174 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.173 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.172 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.171 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.170 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.169 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.167 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.166 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.165 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.164 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.163 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.162 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.161 tracks/csharp/exercises/luhn/Example.cs
trackler-2.2.1.160 tracks/csharp/exercises/luhn/Example.cs