Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- More Exercise: Regular Expressions
- 01. Winning Ticket
- Lottery is exciting. What is not, is checking a million tickets for winnings only by hand. So, you are given the task to create a program which automatically checks if a ticket is a winner.
- You are given a collection of tickets separated by commas and spaces. You need to check every one of them if it has a winning combination of symbols.
- A valid ticket should have exactly 20 characters. The winning symbols are '@', '#', '$' and '^'. But in order for a ticket to be a winner the symbol should uninterruptedly repeat for at least 6 times in both the tickets left half and the tickets right half.
- For example, a valid winning ticket should be something like this:
- "Cash$$$$$$Ca$$$$$$sh"
- The left half "Cash$$$$$$" contains "$$$$$$", which is also contained in the tickets right half "Ca$$$$$$sh". A winning ticket should contain symbols repeating up to 10 times in both halves, which is considered a Jackpot (for example: "$$$$$$$$$$$$$$$$$$$$").
- Input
- The input will be read from the console. The input consists of a single line containing all tickets separated by commas and one or more white spaces in the format:
- • "{ticket}, {ticket}, … {ticket}"
- Output
- Print the result for every ticket in the order of their appearance, each on a separate line in the format:
- • Invalid ticket - "invalid ticket"
- • No match - "ticket "{ticket}" - no match"
- • Match with length 6 to 9 - "ticket "{ticket}" - {match length}{match symbol}"
- • Match with length 10 - "ticket "{ticket}" - {match length}{match symbol} Jackpot!"
- Constrains
- • Number of tickets will be in range [0 … 100]
- Examples
- Input Output
- Cash$$$$$$Ca$$$$$$sh ticket "Cash$$$$$$Ca$$$$$$sh" - 6$
- $$$$$$$$$$$$$$$$$$$$, aabb , th@@@@@@eemo@@@@@@ey ticket "$$$$$$$$$$$$$$$$$$$$" - 10$ Jackpot!
- invalid ticket
- ticket "th@@@@@@eemo@@@@@@ey" - 6@
- validticketnomatch:( ticket "validticketnomatch:(" - no match
- $$$$$$$$$$#^^$$$$$$$ ticket "$$$$$$$$$$#^^$$$$$$$" - 7$
- using System;
- using System.Linq;
- using System.Text.RegularExpressions;
- public class Program
- {
- public static void Main()
- {
- var allTicket = Console.ReadLine().Split(',').Select(x => x.Trim());
- foreach (var ticket in allTicket)
- {
- if (ticket.Length != 20)
- {
- Console.WriteLine("invalid ticket");
- continue;
- }
- else
- {
- var leftHalf = ticket.Substring(0, 10);
- var rightHalf = ticket.Substring(10);
- var pattern = @"\^{6,10}|#{6,10}|@{6,10}|\${6,10}";
- var matchLeftHalf = Regex.Match(leftHalf, pattern);
- var matchRightHalf = Regex.Match(rightHalf, pattern);
- if (matchLeftHalf.Success && matchRightHalf.Success && matchLeftHalf.Value[0] == matchRightHalf.Value[0])
- {
- var findMinValue = Math.Min(matchLeftHalf.Length, matchRightHalf.Length);
- if (findMinValue == 10)
- {
- Console.WriteLine($"ticket \"{ticket}\" - {findMinValue}{matchLeftHalf.Value[0]} Jackpot!");
- }
- else
- {
- Console.WriteLine($"ticket \"{ticket}\" - {findMinValue}{matchLeftHalf.Value[0]}");
- }
- }
- else
- {
- Console.WriteLine($"ticket \"{ticket}\" - no match");
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment