Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace demo
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<string> schedule = Console.ReadLine().Split(", ", StringSplitOptions.RemoveEmptyEntries).ToList();
- string command;
- while ((command = Console.ReadLine()) != "course start")
- {
- string[] currentCommand = command.Split(":", StringSplitOptions.RemoveEmptyEntries).ToArray();
- string commandName = currentCommand[0];
- string lessonTitle = currentCommand[1];
- bool hasLessonTitle = schedule.Contains(lessonTitle);
- bool hasLessonTitleExercise = schedule.Contains($"{lessonTitle}-Exercise");
- if (commandName == "Add" && !hasLessonTitle)
- {
- Add(schedule, lessonTitle);
- }
- else if (commandName == "Insert" && !hasLessonTitle)
- {
- Insert(schedule, currentCommand, lessonTitle);
- }
- else if (commandName == "Remove" && hasLessonTitle)
- {
- if (hasLessonTitleExercise)
- {
- schedule.Remove($"{lessonTitle}-Exercise");
- }
- schedule.Remove(lessonTitle);
- }
- else if (commandName == "Swap")
- {
- Swap(schedule, currentCommand, lessonTitle, hasLessonTitle, hasLessonTitleExercise);
- }
- else if (commandName == "Exercise")
- {
- Exercise(schedule, lessonTitle, hasLessonTitle, hasLessonTitleExercise);
- }
- }
- Print(schedule);
- }
- private static void Exercise(List<string> schedule, string lessonTitle, bool hasLessonTitle, bool hasLessonTitleExercise)
- {
- if (hasLessonTitle && !hasLessonTitleExercise)
- {
- int lessionTitleIndex = schedule.IndexOf(lessonTitle);
- schedule.Insert(lessionTitleIndex + 1, $"{lessonTitle}-Exercise");
- }
- else if (!hasLessonTitle && !hasLessonTitleExercise)
- {
- schedule.Add(lessonTitle);
- schedule.Add($"{lessonTitle}-Exercise");
- }
- }
- private static void Print(List<string> schedule)
- {
- for (int i = 0; i < schedule.Count; i++)
- {
- Console.WriteLine($"{i + 1}.{schedule[i]}");
- }
- }
- private static void Swap(List<string> schedule, string[] currentCommand, string lessonTitle, bool hasLessonTitle, bool hasLessonTitleExercise)
- {
- string lessonTitle2 = currentCommand[2];
- bool hasLessonTitle2 = schedule.Contains(lessonTitle2);
- bool hasLessonTitle2Exercise = schedule.Contains($"{lessonTitle2}-Exercise");
- if (hasLessonTitle && hasLessonTitle2)
- {
- int lessonTitleIndex = schedule.IndexOf(lessonTitle);
- int lessonTitleExerciseIndex = schedule.IndexOf($"{lessonTitle}-Exercise");
- int lessonTitle2Index = schedule.IndexOf(lessonTitle2);
- int lessonTitle2ExerciseIndex = schedule.IndexOf($"{lessonTitle2}-Exercise");
- if (lessonTitleIndex > lessonTitle2Index)
- {
- lessonTitleIndex = schedule.IndexOf(lessonTitle2);
- lessonTitleExerciseIndex = schedule.IndexOf($"{lessonTitle2}-Exercise");
- lessonTitle2Index = schedule.IndexOf(lessonTitle);
- lessonTitle2ExerciseIndex = schedule.IndexOf($"{lessonTitle}-Exercise");
- lessonTitle2 = currentCommand[1];
- lessonTitle = currentCommand[2];
- }
- schedule.Insert(lessonTitleIndex, lessonTitle2);
- schedule.Insert(lessonTitle2Index + 1, lessonTitle);
- schedule.RemoveAt(lessonTitleIndex + 1);
- schedule.RemoveAt(lessonTitle2Index + 1);
- if (hasLessonTitleExercise && !hasLessonTitle2Exercise)
- {
- schedule.Insert(lessonTitle2Index + 1, $"{lessonTitle}-Exercise");
- schedule.RemoveAt(lessonTitleExerciseIndex + 1);
- }
- else if (!hasLessonTitleExercise && hasLessonTitle2Exercise)
- {
- schedule.Insert(lessonTitleIndex + 1, $"{lessonTitle2}-Exercise");
- schedule.RemoveAt(lessonTitle2ExerciseIndex + 1);
- }
- else if (hasLessonTitleExercise && hasLessonTitle2Exercise)
- {
- schedule.Insert(lessonTitleIndex + 1, $"{lessonTitle2}-Exercise");
- schedule.Insert(lessonTitle2Index + 2, $"{lessonTitle}-Exercise");
- schedule.RemoveAt(lessonTitleExerciseIndex + 1);
- schedule.RemoveAt(lessonTitle2ExerciseIndex + 1);
- }
- }
- }
- private static void Insert(List<string> schedule, string[] currentCommand, string lessonTitle)
- {
- int index = int.Parse(currentCommand[2]);
- schedule.Insert(index, lessonTitle);
- }
- private static void Add(List<string> schedule, string lessonTitle)
- {
- schedule.Add(lessonTitle);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement