Advertisement
Guest User

Untitled

a guest
Feb 6th, 2022
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.24 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5.  
  6. namespace PRFM
  7. {
  8.     internal class Program
  9.     {
  10.           static void Main(string[] args)
  11.         {
  12.             List<string> guests = Console.ReadLine()
  13.                 .Split(" ", StringSplitOptions.RemoveEmptyEntries)
  14.                 .ToList();
  15.             List<string> temp = new List<string>();
  16.             string command = Console.ReadLine();
  17.  
  18.             var commandLines = new List<String>();
  19.  
  20.             while (command?.ToLower() != "print")
  21.             {
  22.                 string[] tokens = command.Split(";", StringSplitOptions.RemoveEmptyEntries);
  23.                 var currCommand = tokens[1] + ';' + tokens[2];
  24.  
  25.                 switch (tokens[0]?.ToLower())
  26.                 {
  27.                     case "add filter":
  28.                         commandLines.Add(currCommand);
  29.                         break;
  30.                     case "remove filter":
  31.                         commandLines.RemoveAll(x => x == currCommand);
  32.                         break;
  33.                     default:
  34.                         throw new ArgumentException("Invalid command: " + tokens[0]);
  35.                 }
  36.  
  37.                 command = Console.ReadLine();
  38.             }
  39.  
  40.             foreach (var currCommand in commandLines)
  41.             {
  42.                 var commandTokens = currCommand.Split(";");
  43.                 Predicate<string> predicate = GetPredicate(commandTokens[0], commandTokens[1]);
  44.                 guests.RemoveAll(predicate);
  45.             }
  46.  
  47.             Console.WriteLine(string.Join(" ", guests));
  48.         }
  49.  
  50.         private static Predicate<string> GetPredicate(string command, string arg)
  51.         {
  52.             switch (command?.ToLower())
  53.             {
  54.                 case "starts with":
  55.                     return name => name.StartsWith(arg);
  56.                 case "ends with":
  57.                     return name => name.EndsWith(arg);
  58.                 case "contains":
  59.                     return name => name.Contains(arg);
  60.                 case "length":
  61.                     return name => name.Length == int.Parse(arg);
  62.                 default:
  63.                     throw new ArgumentException("Invalid command: " + command);
  64.             }
  65.         }
  66.     }
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement