Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Winning_Ticket
- {
- using System;
- using System.Linq;
- public class Program
- {
- public static void Main(string[] args)
- {
- var tickets = Console.ReadLine()
- .Split(new[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries)
- .ToArray();
- foreach (var ticket in tickets)
- {
- if (ticket.Length != 20)
- {
- Console.WriteLine("invalid ticket");
- continue;
- }
- var left = ticket.Take(10).ToArray();
- var right = ticket.Skip(10).ToArray();
- var winningTicket = false;
- var leftResult = FindRepeatingSymbols(left);
- if ((leftResult.Symbol == '@'
- || leftResult.Symbol == '#'
- || leftResult.Symbol == '$'
- || leftResult.Symbol == '^')
- && leftResult.Count >= 6)
- {
- var rightResult = FindRepeatingSymbols(right);
- if (leftResult.Symbol == rightResult.Symbol
- && rightResult.Count >= 6)
- {
- var jackpot = leftResult.Count == 10 && rightResult.Count == 10
- ? " Jackpot!"
- : string.Empty;
- Console.WriteLine($"ticket \"{ticket}\" - {Math.Min(leftResult.Count, rightResult.Count)}{leftResult.Symbol}{jackpot}");
- winningTicket = true;
- }
- }
- if (!winningTicket)
- {
- Console.WriteLine($"ticket \"{ticket}\" - no match");
- }
- }
- }
- public class Result
- {
- public int Count { get; set; }
- public char Symbol { get; set; }
- }
- public static Result FindRepeatingSymbols(char[] symbols)
- {
- var prevSymbol = symbols.First();
- int count = 1;
- int maxCount = 0;
- var maxSymbol = default(char);
- for (int i = 0; i < symbols.Length - 1; i++)
- {
- var currentSymbol = symbols[i + 1];
- if (prevSymbol == currentSymbol)
- {
- count++;
- if (count > maxCount)
- {
- maxCount = count;
- maxSymbol = prevSymbol;
- }
- }
- else
- {
- count = 1;
- }
- prevSymbol = currentSymbol;
- }
- return new Result
- {
- Count = maxCount,
- Symbol = maxSymbol
- };
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment