Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Santa_s_Gifts
- {
- class Program
- {
- static void Main(string[] args)
- {
- int numberOfCommands = int.Parse(Console.ReadLine());
- List<int> houses = Console.ReadLine().Split(' ').Select(int.Parse).ToList();
- int index = 0;
- int count = 0;
- while (count < numberOfCommands)
- {
- string[] arrayOfCommantds = Console.ReadLine().Split(' ').ToArray();
- if (arrayOfCommantds[0] == "Forward")
- {
- //before index + int.Parse(arrayOfCommantds[1]) >= 0 ||
- //тук проверяваме подадените ни стъпки, ако са повече от нула и същевременно
- //с това индекса на който се намираме сега + броят стъпки трябва да е в дължината на листа
- if (int.Parse(arrayOfCommantds[1]) > 0 &&
- index + int.Parse(arrayOfCommantds[1]) < houses.Count)
- {
- index = index + int.Parse(arrayOfCommantds[1]);
- houses.RemoveAt(index);
- }
- }
- else if (arrayOfCommantds[0] == "Back")
- {
- //тук проверяваме само като изваждаме броя стъпки от настоящия ни индек се вписваме в размера на листа,
- //тъй като се връщаме назад, няма как да излезем с index - int.Parse(arrayOfCommantds[1]) < houses.Count
- if (index - int.Parse(arrayOfCommantds[1]) >= 0)
- {
- index = index - int.Parse(arrayOfCommantds[1]);
- houses.RemoveAt(index);
- }
- }
- else if (arrayOfCommantds[0] == "Gift")
- {
- //когато валидираме един индекс, за да се впишем в границите на масива или листа,
- //проверката трябва да е if(index >=0 && index < array.Lenght) => тоест използваме оператора &&
- //защото трябва да са валидни и двете условия - и индекса да >=0 и индекса да е по-малък от дължината
- //когато проверката е за невалиден индекс е if(index < 0 || index > array.Lenght) => тоест използваме оператора ||,
- //тъй като ако влезе в една от двете проверки индекса става невалиден
- if (int.Parse(arrayOfCommantds[1]) >= 0 &&
- int.Parse(arrayOfCommantds[1]) < houses.Count)
- {
- houses.Insert(int.Parse(arrayOfCommantds[1]),
- int.Parse(arrayOfCommantds[2]));
- index = int.Parse(arrayOfCommantds[1]);
- }
- }
- else if (arrayOfCommantds[0] == "Swap")
- {
- //тук проверяваш два пъти дали се съдържа едно и също нещо houses.Contains(int.Parse(arrayOfCommantds[1])
- if (houses.Contains(int.Parse(arrayOfCommantds[1])) &&
- houses.Contains(int.Parse(arrayOfCommantds[2])))
- {
- int swapFirstIndex = houses.IndexOf(int.Parse(arrayOfCommantds[1]));
- int swapSecondIndex = houses.IndexOf(int.Parse(arrayOfCommantds[2]));
- houses[swapFirstIndex] = int.Parse(arrayOfCommantds[2]);
- houses[swapSecondIndex] = int.Parse(arrayOfCommantds[1]);
- }
- }
- count++;
- }
- Console.WriteLine($"Position: {index}");
- Console.WriteLine(string.Join(", ", houses));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement