Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Security.Cryptography.X509Certificates;
- using System.Text.RegularExpressions;
- namespace Ex04_WinningTicket
- {
- class WinningTicket
- {
- static void Main()
- {
- //solution 1
- #region Solution1
- // var tickets = Console.ReadLine()
- // .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
- // .Select(t => t.Trim())
- // .ToArray();
- // foreach (var ticket in tickets)
- // {
- // if (ticket.Length != 20)
- // {
- // Console.WriteLine("invalid ticket");
- // continue;
- // }
- // var left = new string(ticket.Take(10).ToArray());
- // var right = new string(ticket.Skip(10).ToArray());
- // var winningSimbols = new string[] { "@", "#", "\\^", "\\$" };
- // var winingTicket = false;
- // foreach (var winningSimbol in winningSimbols)
- // {
- // var regex = new Regex($"{winningSimbol}{{6,}}");
- // var lefMatch = regex.Match(left);
- // if (lefMatch.Success)
- // {
- // var rightMatch = regex.Match(right);
- // if (rightMatch.Success)
- // {
- // winingTicket = true;
- // var leftSimbolsLenght = lefMatch.Value.Length;
- // var rightSimbolsLenght = rightMatch.Value.Length;
- // var jackpot = leftSimbolsLenght == 10 && rightSimbolsLenght == 10
- // ? " Jackpot!" : String.Empty;
- // Console.WriteLine($"ticket \"{ticket}\" - " +
- // $"{Math.Min(leftSimbolsLenght,rightSimbolsLenght)}" +
- // $"{winningSimbol.Trim('\\')}{jackpot}");
- // break;
- // }
- // }
- // }
- // if (!winingTicket)
- // {
- // Console.WriteLine($"ticket \"{ticket}\" - no match");
- // }
- // }
- #endregion
- //Solution2 with IF
- var tickets = Console.ReadLine()
- .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
- .Select(t => t.Trim())
- .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 = FindRepeatinSimbols(left);
- if ((leftResult.Symbol == '@'
- || leftResult.Symbol == '#'
- || leftResult.Symbol == '$'
- || leftResult.Symbol == '^')
- && leftResult.Count >= 6)
- {
- var rightResult = FindRepeatinSimbols(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 FindRepeatinSimbols(char[] symbols)
- {
- var previusSymbol = symbols.First();
- int count = 1;
- var maxCount = 0;
- var maxSymbol = default(char);
- for (int i = 1; i < symbols.Length; i++)
- {
- var currentSymbol = symbols[i];
- if (previusSymbol == currentSymbol)
- {
- count++;
- }
- else
- {
- if (count > maxCount)
- {
- maxCount = count;
- maxSymbol = previusSymbol;
- }
- count = 1;
- }
- if (count > maxCount)
- {
- maxCount = count;
- maxSymbol = previusSymbol;
- }
- previusSymbol = currentSymbol;
- }
- return new Result()
- {
- Count = maxCount,
- Symbol = maxSymbol
- };
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement