Mirineo

WinningTicket

Feb 24th, 2017
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.88 KB | None | 0 0
  1. namespace Winning_Ticket
  2. {
  3.     using System;
  4.     using System.Linq;
  5.  
  6.     public class Program
  7.     {
  8.         public static void Main(string[] args)
  9.         {
  10.             var tickets = Console.ReadLine()
  11.                 .Split(new[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries)
  12.                 .ToArray();
  13.  
  14.             foreach (var ticket in tickets)
  15.             {
  16.                 if (ticket.Length != 20)
  17.                 {
  18.                     Console.WriteLine("invalid ticket");
  19.                     continue;
  20.                 }
  21.  
  22.                 var left = ticket.Take(10).ToArray();
  23.                 var right = ticket.Skip(10).ToArray();
  24.                 var winningTicket = false;
  25.  
  26.                 var leftResult = FindRepeatingSymbols(left);
  27.                 if ((leftResult.Symbol == '@'
  28.                     || leftResult.Symbol == '#'
  29.                     || leftResult.Symbol == '$'
  30.                     || leftResult.Symbol == '^')
  31.                     && leftResult.Count >= 6)
  32.                 {
  33.                     var rightResult = FindRepeatingSymbols(right);
  34.                     if (leftResult.Symbol == rightResult.Symbol
  35.                         && rightResult.Count >= 6)
  36.                     {
  37.                         var jackpot = leftResult.Count == 10 && rightResult.Count == 10
  38.                             ? " Jackpot!"
  39.                             : string.Empty;
  40.  
  41.                         Console.WriteLine($"ticket \"{ticket}\" - {Math.Min(leftResult.Count, rightResult.Count)}{leftResult.Symbol}{jackpot}");
  42.                         winningTicket = true;
  43.                     }
  44.                 }
  45.  
  46.                 if (!winningTicket)
  47.                 {
  48.                     Console.WriteLine($"ticket \"{ticket}\" - no match");
  49.                 }
  50.             }
  51.         }
  52.  
  53.         public class Result
  54.         {
  55.             public int Count { get; set; }
  56.  
  57.             public char Symbol { get; set; }
  58.         }
  59.  
  60.         public static Result FindRepeatingSymbols(char[] symbols)
  61.         {
  62.             var prevSymbol = symbols.First();
  63.             int count = 1;
  64.             int maxCount = 0;
  65.             var maxSymbol = default(char);
  66.  
  67.             for (int i = 0; i < symbols.Length - 1; i++)
  68.             {
  69.                 var currentSymbol = symbols[i + 1];
  70.                 if (prevSymbol == currentSymbol)
  71.                 {
  72.                     count++;
  73.                     if (count > maxCount)
  74.                     {
  75.                         maxCount = count;
  76.                         maxSymbol = prevSymbol;
  77.                     }
  78.                 }
  79.                 else
  80.                 {
  81.                     count = 1;
  82.                 }
  83.  
  84.                 prevSymbol = currentSymbol;
  85.             }
  86.  
  87.             return new Result
  88.             {
  89.                 Count = maxCount,
  90.                 Symbol = maxSymbol
  91.             };
  92.         }
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment