Skip to content

Commit

Permalink
refactor(luhn): remove sumi
Browse files Browse the repository at this point in the history
  • Loading branch information
aloisdg committed Sep 21, 2021
1 parent ea2acf6 commit a2979ed
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
2 changes: 0 additions & 2 deletions Cardidy/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,4 @@ internal static int PadRight(this int source, int totalWidth, int paddingValue)
}

internal static int ToNumber(this IEnumerable<int> digits) => digits.Aggregate((digit, sum) => digit * 10 + sum);

internal static int Sumi(this IEnumerable<int> source, Func<int, int, int> f) => source.Select(f).Sum();
}
8 changes: 5 additions & 3 deletions Cardidy/Model/ALuhnCard.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ internal abstract record ALuhnCard : ACard

internal ALuhnCard(CardType name, IEnumerable<int> prefixes, IEnumerable<int> lengths) : this(name, prefixes.Select(x => new PaddedRange(x)), lengths) { }

internal ALuhnCard(CardType name, int prefix, IEnumerable<int> lengths) : this(name, new[] { new PaddedRange(prefix)}, lengths) { }
internal ALuhnCard(CardType name, int prefix, IEnumerable<int> lengths) : this(name, new[] { new PaddedRange(prefix) }, lengths) { }

public override bool Check(IEnumerable<int> digits) => CheckLuhn(digits);

Expand All @@ -20,7 +20,9 @@ internal abstract record ALuhnCard : ACard
/// <returns>true/false depending on valid checkdigit</returns>
private static bool CheckLuhn(IEnumerable<int> digits) => digits
.Reverse()
.Sumi((thisNum, i) => i % 2 == 0
.Select((thisNum, i) =>
i % 2 == 0
? thisNum
: ((thisNum *= 2) > 9 ? thisNum - 9 : thisNum)) % 10 == 0;
: ((thisNum *= 2) > 9 ? thisNum - 9 : thisNum))
.Sum() % 10 == 0;
}

0 comments on commit a2979ed

Please sign in to comment.