1,225,982
clicked '
Ask Pex!
'
Sign In
Random Puzzle
Learn
APCS
New
C#
Visual Basic
F#
The code is a puzzle.
Do you understand what the code does? Click
Ask Pex!
to find out.
using System; public class Program { // What is a potentially valid credit card number? Ask Pex to find out! public static void Puzzle(string cardNumber) { if (Validate(cardNumber)) Console.WriteLine("{0} is a valid credit card number", cardNumber); } static bool Validate(string cardNumber) { if (cardNumber.StartsWith("51") || cardNumber.StartsWith("55")) return cardNumber.Length == 16 && LuhnValidate(cardNumber); if (cardNumber.StartsWith("4")) return (cardNumber.Length == 13 || cardNumber.Length == 16) && LuhnValidate(cardNumber); if (cardNumber.StartsWith("34") || cardNumber.StartsWith("37")) return cardNumber.Length == 15 && LuhnValidate(cardNumber); if (cardNumber.StartsWith("34") || cardNumber.StartsWith("37")) return cardNumber.Length == 15 && LuhnValidate(cardNumber); if (cardNumber.StartsWith("300") || cardNumber.StartsWith("301") || cardNumber.StartsWith("302") || cardNumber.StartsWith("303") || cardNumber.StartsWith("304") || cardNumber.StartsWith("305") || cardNumber.StartsWith("36") || cardNumber.StartsWith("38")) return cardNumber.Length == 14 && LuhnValidate(cardNumber); if (cardNumber.StartsWith("6011")) return cardNumber.Length == 16 && LuhnValidate(cardNumber); if (cardNumber.StartsWith("2014") || cardNumber.StartsWith("2149")) return cardNumber.Length == 15; if (cardNumber.StartsWith("3")) return cardNumber.Length == 16 && LuhnValidate(cardNumber); if (cardNumber.StartsWith("2131") || cardNumber.StartsWith("1800")) return cardNumber.Length == 15 && LuhnValidate(cardNumber); return false; } static bool LuhnValidate(string cardNumber) { int sum = 0; for (int i = 0; i < cardNumber.Length; i++) { int digit = cardNumber[i] - '0'; if (digit < 0 || digit > 9) return false; if ((cardNumber.Length - i) % 2 != 0) sum += digit; else if (digit < 5) sum += digit * 2; else sum += digit * 2 - 9; } return sum % 10 == 0; } }
Permalink
Coding Duel Name:
Help
Community
Live Feed
About
© 2013 Microsoft - Pex v0.94 - .NET v4 -
Terms of Use
-
Privacy