Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.56 KB | None | 0 0
  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")
  50.                 {
  51.                     Exercise(schedule, lessonTitle, hasLessonTitle, hasLessonTitleExercise);
  52.                 }
  53.             }
  54.  
  55.             Print(schedule);
  56.         }
  57.  
  58.         private static void Exercise(List<string> schedule, string lessonTitle, bool hasLessonTitle, bool hasLessonTitleExercise)
  59.         {
  60.             if (hasLessonTitle && !hasLessonTitleExercise)
  61.             {
  62.                 int lessionTitleIndex = schedule.IndexOf(lessonTitle);
  63.                 schedule.Insert(lessionTitleIndex + 1, $"{lessonTitle}-Exercise");
  64.             }
  65.  
  66.             else if (!hasLessonTitle && !hasLessonTitleExercise)
  67.             {
  68.                 schedule.Add(lessonTitle);
  69.                 schedule.Add($"{lessonTitle}-Exercise");
  70.             }
  71.  
  72.         }
  73.  
  74.         private static void Print(List<string> schedule)
  75.         {
  76.             for (int i = 0; i < schedule.Count; i++)
  77.             {
  78.                 Console.WriteLine($"{i + 1}.{schedule[i]}");
  79.             }
  80.         }
  81.  
  82.         private static void Swap(List<string> schedule, string[] currentCommand, string lessonTitle, bool hasLessonTitle, bool hasLessonTitleExercise)
  83.         {
  84.             string lessonTitle2 = currentCommand[2];
  85.  
  86.             bool hasLessonTitle2 = schedule.Contains(lessonTitle2);
  87.             bool hasLessonTitle2Exercise = schedule.Contains($"{lessonTitle2}-Exercise");
  88.  
  89.             if (hasLessonTitle && hasLessonTitle2)
  90.             {
  91.                 int lessonTitleIndex = schedule.IndexOf(lessonTitle);
  92.                 int lessonTitleExerciseIndex = schedule.IndexOf($"{lessonTitle}-Exercise");
  93.                 int lessonTitle2Index = schedule.IndexOf(lessonTitle2);
  94.                 int lessonTitle2ExerciseIndex = schedule.IndexOf($"{lessonTitle2}-Exercise");
  95.  
  96.                 if (lessonTitleIndex > lessonTitle2Index)
  97.                 {
  98.                     lessonTitleIndex = schedule.IndexOf(lessonTitle2);
  99.                     lessonTitleExerciseIndex = schedule.IndexOf($"{lessonTitle2}-Exercise");
  100.                     lessonTitle2Index = schedule.IndexOf(lessonTitle);
  101.                     lessonTitle2ExerciseIndex = schedule.IndexOf($"{lessonTitle}-Exercise");
  102.                     lessonTitle2 = currentCommand[1];
  103.                     lessonTitle = currentCommand[2];
  104.                 }
  105.  
  106.                 schedule.Insert(lessonTitleIndex, lessonTitle2);
  107.                 schedule.Insert(lessonTitle2Index + 1, lessonTitle);
  108.  
  109.                 schedule.RemoveAt(lessonTitleIndex + 1);
  110.                 schedule.RemoveAt(lessonTitle2Index + 1);
  111.  
  112.                 if (hasLessonTitleExercise && !hasLessonTitle2Exercise)
  113.                 {
  114.                     schedule.Insert(lessonTitle2Index + 1, $"{lessonTitle}-Exercise");
  115.  
  116.                     schedule.RemoveAt(lessonTitleExerciseIndex + 1);
  117.                 }
  118.  
  119.                 else if (!hasLessonTitleExercise && hasLessonTitle2Exercise)
  120.                 {
  121.                     schedule.Insert(lessonTitleIndex + 1, $"{lessonTitle2}-Exercise");
  122.  
  123.                     schedule.RemoveAt(lessonTitle2ExerciseIndex + 1);
  124.                 }
  125.  
  126.                 else if (hasLessonTitleExercise && hasLessonTitle2Exercise)
  127.                 {
  128.                     schedule.Insert(lessonTitleIndex + 1, $"{lessonTitle2}-Exercise");
  129.                     schedule.Insert(lessonTitle2Index + 2, $"{lessonTitle}-Exercise");
  130.  
  131.                     schedule.RemoveAt(lessonTitleExerciseIndex + 1);
  132.                     schedule.RemoveAt(lessonTitle2ExerciseIndex + 1);
  133.                 }
  134.             }
  135.         }
  136.  
  137.         private static void Insert(List<string> schedule, string[] currentCommand, string lessonTitle)
  138.         {
  139.             int index = int.Parse(currentCommand[2]);
  140.             schedule.Insert(index, lessonTitle);
  141.         }
  142.  
  143.         private static void Add(List<string> schedule, string lessonTitle)
  144.         {
  145.             schedule.Add(lessonTitle);
  146.         }
  147.     }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement