Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Advanced
- {
- class Program
- {
- static void Main(string[] args)
- {
- var guests = Console.ReadLine().Split().ToList();
- Func<string, string, bool> startsWith = (a, b) => a.StartsWith(b);
- Func<string, string, bool> endsWith = (a, b) => a.EndsWith(b);
- Func<string, string, bool> contains = (a, b) => a.Contains(b);
- Func<string, int, bool> checkLength = (a, b) => a.Length == b;
- List<string> result = new List<string>(guests);
- List<string> filtered = new List<string>();
- while (true)
- {
- var input = Console.ReadLine();
- if (input == "Print")
- {
- break;
- }
- var line = input.Split(";");
- var command = line[0];
- var action = line[1];
- var criteria = line[2];
- switch (action)
- {
- case "Starts with":
- filtered = guests.Where(i => startsWith(i, criteria)).ToList();
- break;
- case "Ends with":
- filtered = guests.Where(i => endsWith(i, criteria)).ToList();
- break;
- case "Length":
- filtered = guests.Where(i => checkLength(i, int.Parse(criteria))).ToList();
- break;
- case "Contains":
- filtered = guests.Where(i => contains(i, criteria)).ToList();
- break;
- }
- switch (command)
- {
- case "Add filter":
- result.RemoveAll(r => filtered.Contains(r));
- break;
- case "Remove filter":
- result.AddRange(filtered);
- result = result.ToList();
- break;
- }
- }
- guests.RemoveAll(g => !result.Contains(g));
- Console.WriteLine(String.Join(" ", guests));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment