Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace _3_JediCodeX
- {
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- class Program
- {
- static void Main()
- {
- int n = int.Parse(Console.ReadLine());
- StringBuilder builder = new StringBuilder();
- IDictionary<int, string> messageDictionary = new Dictionary<int, string>();
- for (int i = 0; i < n; i++)
- {
- builder.AppendLine(Console.ReadLine().Trim());
- }
- string namePatternInput = Console.ReadLine().Trim();
- string msgPatternInput = Console.ReadLine().Trim();
- string namePattern =
- $"{Regex.Escape(namePatternInput)}([a-zA-Z]{{{namePatternInput.Length}}})(?![a-zA-Z])";
- Queue<string> namesQueue = new Queue<string>();
- Regex regex = new Regex(namePattern);
- MatchCollection namesCollection = regex.Matches(builder.ToString());
- foreach (Match nameMatch in namesCollection)
- {
- namesQueue.Enqueue(nameMatch.Groups[1].Value);
- }
- GetTheMessages(builder, msgPatternInput, messageDictionary);
- int[] indexes =
- Console.ReadLine()
- .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
- .Select(int.Parse)
- .ToArray();
- List<string> result = new List<string>();
- foreach (var index in indexes)
- {
- if (messageDictionary.ContainsKey(index) && namesQueue.Count > 0)
- {
- result.Add(namesQueue.Dequeue() + " - " + messageDictionary[index]);
- }
- }
- Console.WriteLine(string.Join(Environment.NewLine, result));
- }
- private static void GetTheMessages(StringBuilder builder, string msgPatternInput, IDictionary<int, string> messageDictionary)
- {
- string messagePattern = $"{Regex.Escape(msgPatternInput)}([a-zA-Z0-9]{{{msgPatternInput.Length}}})(?![a-zA-Z0-9])";
- Regex regex = new Regex(messagePattern);
- MatchCollection messageCollection = regex.Matches(builder.ToString());
- int indexCounter = 1;
- foreach (Match match in messageCollection)
- {
- if (!messageDictionary.ContainsKey(indexCounter))
- {
- messageDictionary[indexCounter] = match.Groups[1].Value;
- indexCounter++;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement