MiroslavKisov

WinningTicket

Nov 28th, 2017
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.89 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Text.RegularExpressions;
  4.  
  5. namespace _04.WinningTicket
  6. {
  7.     public class StartUp
  8.     {
  9.         public static void Main()
  10.         {
  11.             var tickets = Console.ReadLine()
  12.                 .Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries)
  13.                 .ToArray();
  14.  
  15.             string patternAt = @"(\@{6,10})";
  16.             string patternDs = @"(\#{6,10})";
  17.             string patternNor = @"(\^{6,10})";
  18.             string patternDollar = @"(\${6,10})";
  19.  
  20.             Regex regexAt = new Regex(patternAt);
  21.             Regex regexDs = new Regex(patternDs);
  22.             Regex regexNor = new Regex(patternNor);
  23.             Regex regexDollar = new Regex(patternDollar);
  24.  
  25.             for (int i = 0; i < tickets.Length; i++)
  26.             {
  27.                 if (tickets[i].Length != 20)
  28.                 {
  29.                     Console.WriteLine("invalid ticket");
  30.                     continue;
  31.                 }
  32.                 int symbolCount = 0;
  33.                 string firstPart = tickets[i].Substring(0, 10);
  34.                 string secondPart = tickets[i].Substring(10);
  35.                 Match matchFirstPartAt = regexAt.Match(firstPart);
  36.                 Match matchSecondPartAt = regexAt.Match(secondPart);
  37.                 Match matchFirstPartDs = regexDs.Match(firstPart);
  38.                 Match matchSecondPartDs = regexDs.Match(secondPart);
  39.                 Match matchFirstPartNor = regexNor.Match(firstPart);
  40.                 Match matchSecondPartNor = regexNor.Match(secondPart);
  41.                 Match matchFirstPartDollar = regexDollar.Match(firstPart);
  42.                 Match matchSecondPartDollar = regexDollar.Match(secondPart);
  43.  
  44.                 if (matchFirstPartAt.Success && matchSecondPartAt.Success)
  45.                 {
  46.                     symbolCount = ProcessTicket(tickets[i], '@');
  47.                     PrintTicket(symbolCount, tickets[i], '@');
  48.                 }
  49.                 else if (matchFirstPartDs.Success && matchSecondPartDs.Success)
  50.                 {
  51.                     symbolCount = ProcessTicket(tickets[i], '#');
  52.                     PrintTicket(symbolCount, tickets[i], '#');
  53.                 }
  54.                 else if (matchFirstPartNor.Success && matchSecondPartNor.Success)
  55.                 {
  56.                     symbolCount = ProcessTicket(tickets[i], '^');
  57.                     PrintTicket(symbolCount, tickets[i], '^');
  58.                 }
  59.                 else if (matchFirstPartDollar.Success && matchSecondPartDollar.Success)
  60.                 {
  61.                     symbolCount = ProcessTicket(tickets[i], '$');
  62.                     PrintTicket(symbolCount, tickets[i], '$');
  63.                 }
  64.                 else
  65.                 {
  66.                     Console.WriteLine($"ticket \"{tickets[i]}\" - no match");
  67.                 }
  68.             }
  69.         }
  70.         public static int ProcessTicket(string currentTicket,char symbol)
  71.         {
  72.             string firstPart = currentTicket.Substring(0, 10);
  73.             string secondPart = currentTicket.Substring(10);
  74.             int symbolCount = 0;
  75.             int symbolCountFirstPart = 0;
  76.             int symbolCountSecondPart = 0;
  77.             symbolCountFirstPart = firstPart.Where(x => x == symbol).Count();
  78.             symbolCountSecondPart = secondPart.Where(x => x == symbol).Count();
  79.             symbolCount = Math.Min(symbolCountFirstPart, symbolCountSecondPart);
  80.             return symbolCount;
  81.         }
  82.  
  83.         public static void PrintTicket(int symbolCount,string currentTicket,char symbol)
  84.         {
  85.             if (symbolCount >= 1 && symbolCount <= 9)
  86.             {
  87.                 Console.WriteLine($"ticket \"{currentTicket}\" - {symbolCount}{symbol}");
  88.             }
  89.             else
  90.             {
  91.                 Console.WriteLine($"ticket \"{currentTicket}\" - {symbolCount}{symbol} Jackpot!");
  92.             }
  93.         }
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment