Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace PRFM
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- List<string> guests = Console.ReadLine()
- .Split(" ", StringSplitOptions.RemoveEmptyEntries)
- .ToList();
- List<string> temp = new List<string>();
- string command = Console.ReadLine();
- var commandLines = new List<String>();
- while (command?.ToLower() != "print")
- {
- string[] tokens = command.Split(";", StringSplitOptions.RemoveEmptyEntries);
- var currCommand = tokens[1] + ';' + tokens[2];
- switch (tokens[0]?.ToLower())
- {
- case "add filter":
- commandLines.Add(currCommand);
- break;
- case "remove filter":
- commandLines.RemoveAll(x => x == currCommand);
- break;
- default:
- throw new ArgumentException("Invalid command: " + tokens[0]);
- }
- command = Console.ReadLine();
- }
- foreach (var currCommand in commandLines)
- {
- var commandTokens = currCommand.Split(";");
- Predicate<string> predicate = GetPredicate(commandTokens[0], commandTokens[1]);
- guests.RemoveAll(predicate);
- }
- Console.WriteLine(string.Join(" ", guests));
- }
- private static Predicate<string> GetPredicate(string command, string arg)
- {
- switch (command?.ToLower())
- {
- case "starts with":
- return name => name.StartsWith(arg);
- case "ends with":
- return name => name.EndsWith(arg);
- case "contains":
- return name => name.Contains(arg);
- case "length":
- return name => name.Length == int.Parse(arg);
- default:
- throw new ArgumentException("Invalid command: " + command);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement