SHARE
TWEET

Untitled

a guest Feb 18th, 2020 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace demo
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             List<string> schedule = Console.ReadLine().Split(", ", StringSplitOptions.RemoveEmptyEntries).ToList();
  12.  
  13.             string command;
  14.             while ((command = Console.ReadLine()) != "course start")
  15.             {
  16.                 string[] currentCommand = command.Split(":", StringSplitOptions.RemoveEmptyEntries).ToArray();
  17.                 string commandName = currentCommand[0];
  18.                 string lessonTitle = currentCommand[1];
  19.  
  20.                 bool hasLessonTitle = schedule.Contains(lessonTitle);
  21.                 bool hasLessonTitleExercise = schedule.Contains($"{lessonTitle}-Exercise");
  22.  
  23.  
  24.                 if (commandName == "Add" && !hasLessonTitle)
  25.                 {
  26.                     Add(schedule, lessonTitle);
  27.                 }
  28.  
  29.                 else if (commandName == "Insert" && !hasLessonTitle)
  30.                 {
  31.                     Insert(schedule, currentCommand, lessonTitle);
  32.                 }
  33.  
  34.                 else if (commandName == "Remove" && hasLessonTitle)
  35.                 {
  36.                     if (hasLessonTitleExercise)
  37.                     {
  38.                         schedule.Remove($"{lessonTitle}-Exercise");
  39.                     }
  40.  
  41.                     schedule.Remove(lessonTitle);
  42.                 }
  43.  
  44.                 else if (commandName == "Swap")
  45.                 {
  46.                     Swap(schedule, currentCommand, lessonTitle, hasLessonTitle, hasLessonTitleExercise);
  47.                 }
  48.  
  49.                 else if (commandName == "Exercise" && hasLessonTitle || !hasLessonTitle)
  50.                 {
  51.                     Exercise(schedule, lessonTitle, hasLessonTitle);
  52.                 }
  53.             }
  54.  
  55.             Print(schedule);
  56.         }
  57.  
  58.         private static void Print(List<string> schedule)
  59.         {
  60.             for (int i = 0; i < schedule.Count; i++)
  61.             {
  62.                 Console.WriteLine($"{i + 1}.{schedule[i]}");
  63.             }
  64.         }
  65.  
  66.         private static void Exercise(List<string> schedule, string lessonTitle, bool hasLessonTitle)
  67.         {
  68.             if (hasLessonTitle)
  69.             {
  70.                 int lessionTitleIndex = schedule.IndexOf(lessonTitle);
  71.                 schedule.Insert(lessionTitleIndex + 1, $"{lessonTitle}-Exercise");
  72.             }
  73.  
  74.             if (!hasLessonTitle)
  75.             {
  76.                 schedule.Add(lessonTitle);
  77.                 schedule.Add($"{lessonTitle}-Exercise");
  78.             }
  79.         }
  80.  
  81.         private static void Swap(List<string> schedule, string[] currentCommand, string lessonTitle, bool hasLessonTitle, bool hasLessonTitleExercise)
  82.         {
  83.             string lessonTitle2 = currentCommand[2];
  84.  
  85.             bool hasLessonTitle2 = schedule.Contains(lessonTitle2);
  86.             bool hasLessonTitle2Exercise = schedule.Contains($"{lessonTitle2}-Exercise");
  87.  
  88.             if (hasLessonTitle && hasLessonTitle2)
  89.             {
  90.                 int lessonTitleIndex = schedule.IndexOf(lessonTitle);
  91.                 int lessonTitleExerciseIndex = schedule.IndexOf($"{lessonTitle}-Exercise");
  92.                 int lessonTitle2Index = schedule.IndexOf(lessonTitle2);
  93.                 int lessonTitle2ExerciseIndex = schedule.IndexOf($"{lessonTitle2}-Exercise");
  94.  
  95.                 if (lessonTitleIndex > lessonTitle2Index)
  96.                 {
  97.                     lessonTitleIndex = schedule.IndexOf(lessonTitle2);
  98.                     lessonTitleExerciseIndex = schedule.IndexOf($"{lessonTitle2}-Exercise");
  99.                     lessonTitle2Index = schedule.IndexOf(lessonTitle);
  100.                     lessonTitle2ExerciseIndex = schedule.IndexOf($"{lessonTitle}-Exercise");
  101.                     lessonTitle2 = currentCommand[1];
  102.                     lessonTitle = currentCommand[2];
  103.                 }
  104.  
  105.                 schedule.Insert(lessonTitleIndex, lessonTitle2);
  106.                 schedule.Insert(lessonTitle2Index + 1, lessonTitle);
  107.  
  108.                 schedule.RemoveAt(lessonTitleIndex + 1);
  109.                 schedule.RemoveAt(lessonTitle2Index + 1);
  110.  
  111.                 if (hasLessonTitleExercise && !hasLessonTitle2Exercise)
  112.                 {
  113.                     schedule.Insert(lessonTitle2Index + 1, $"{lessonTitle}-Exercise");
  114.  
  115.                     schedule.RemoveAt(lessonTitleExerciseIndex + 1);
  116.                 }
  117.  
  118.                 else if (!hasLessonTitleExercise && hasLessonTitle2Exercise)
  119.                 {
  120.                     schedule.Insert(lessonTitleIndex + 1, $"{lessonTitle2}-Exercise");
  121.  
  122.                     schedule.RemoveAt(lessonTitle2ExerciseIndex + 1);
  123.                 }
  124.  
  125.                 else if (hasLessonTitleExercise && hasLessonTitle2Exercise)
  126.                 {
  127.                     schedule.Insert(lessonTitleIndex + 1, $"{lessonTitle2}-Exercise");
  128.                     schedule.Insert(lessonTitle2Index + 2, $"{lessonTitle}-Exercise");
  129.  
  130.                     schedule.RemoveAt(lessonTitleExerciseIndex + 1);
  131.                     schedule.RemoveAt(lessonTitle2ExerciseIndex + 1);
  132.                 }
  133.             }
  134.         }
  135.  
  136.         private static void Insert(List<string> schedule, string[] currentCommand, string lessonTitle)
  137.         {
  138.             int index = int.Parse(currentCommand[2]);
  139.             schedule.Insert(index, lessonTitle);
  140.         }
  141.  
  142.         private static void Add(List<string> schedule, string lessonTitle)
  143.         {
  144.             schedule.Add(lessonTitle);
  145.         }
  146.     }
  147. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top