Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Text.RegularExpressions;
- class PINValidation
- {
- static void Main()
- {
- var name = Console.ReadLine();
- var gender = Console.ReadLine();
- var pin = Console.ReadLine();
- if (pin.Length == 10 &&
- IsCorrectDate(pin) && IsCorrectGender(pin, gender) &&
- IsCorrectChecksum(pin) && IsNameCorrect(name))
- {
- Console.WriteLine("{{\"name\":\"{0}\",\"gender\":\"{1}\",\"pin\":\"{2}\"}}", name, gender, pin);
- }
- else
- {
- Console.WriteLine("<h2>Incorrect data</h2>");
- }
- }
- private static bool IsCorrectDate(string pin)
- {
- var month = int.Parse(pin.Substring(2, 2));
- var day = int.Parse(pin.Substring(4, 2));
- var year = pin.Substring(0, 2);
- if (month > 40)
- {
- month -= 40;
- year = "20" + year;
- }
- else if (month > 20)
- {
- month -= 20;
- year = "18" + year;
- }
- else
- {
- year = "19" + year;
- }
- var dateString = year + "-" + month + "-" + day;
- DateTime dt;
- return DateTime.TryParse(dateString, out dt);
- }
- static bool IsCorrectGender(string pin, string gender)
- {
- var isIdFemale = (pin[8] - '0') % 2 == 1;
- var isInputFemale = gender == "female";
- return isIdFemale == isInputFemale;
- }
- static bool IsCorrectChecksum(string pin)
- {
- var totalSum = 0;
- var checkSum = pin[9] - '0';
- var numbers = new[] { 2, 4, 8, 5, 10, 9, 7, 3, 6 };
- for (var index = 0; index < numbers.Length; index++)
- {
- var currentDigit = pin[index] - '0';
- totalSum += currentDigit * numbers[index];
- }
- var remainder = totalSum % 11;
- if (remainder == 10)
- {
- remainder = 0;
- }
- return remainder == checkSum;
- }
- static bool IsNameCorrect(string name)
- {
- var nameRegex = new Regex(@"[A-Z][a-z]+\s+[A-Z][a-z]+");
- var match = nameRegex.Match(name);
- return match.Success;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement