Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Last Stop
- The group has reached Paris and went to visit "La Louvre". They accidently found a map behind "The Wedding at Canna" painting. It had some instructions, so they have decided to follow them and see where they will lead them. Your job is to help them.
- Create a program that follows instructions in order to fulfil a quest. First, you will receive a collection of numbers – each representing a painting number. After that, you are going to be receiving instructions, until the "END" command is given.
- - Change {paintingNumber} {changedNumber} – find the painting with the first number in the collection (if it exists) and change its number with the second number – {changedNumber}.
- - Hide {paintingNumber} – find the painting with this value and if it exists and hide it (remove it).
- - Switch {paintingNumber} {paintingNumber2} – find the given paintings in the collections if they exist and switch their places.
- - Insert {place} {paintingNumber} – insert the painting (paintingNumber) on the next place after the given one, if it exists.
- - Reverse – you must reverse the order of the paintings.
- Once you complete the instructions, print the numbers of the paintings on a single line, split by a space.
- Input / Constraints
- • On the 1st line, you are going to receive the numbers of the paintings, split by a single space – integer numbers in the range [1…1000]
- • On the next lines, you are going to receive commands, until you receive the "END" command
- Output
- • Print the message you have received after the conversion of all numbers on a single line
- Examples
- Input Output Comments
- 115 115 101 114 73 111 116 75 70 114 111 116 114 101 115 115 The first command is "Insert". You have to insert painting number 114
- Insert 5 114 at the next index after the 5th:115 115 101 114 73 111 114 116 75
- Switch 116 73 The "Switch" will switch number 116 with 73 and the collection
- Hide 75 should look like this: 115 115 101 114 116 111 114 73 75
- Reverse After receiving the"Hide" command, you must remove 75.
- Change 73 70 After that you receive "Reverse" and you have to reverse the whole
- Insert 10 85 collection. By receiving "Change" you have to exchange the value 73
- END with the value – 70. The next "Insert"command is invalid,
- because there is no 11th index in the collection.
- Input Output
- 77 120 115 101 101 97 78 88 112 111 108 101 111 110 77 117 115 101 101 78 32 97 112 111 108 101 111 110
- Insert 5 32
- Switch 97 78
- Hide 88
- Change 120 117
- END
- using System;
- using System.Linq;
- public class Program
- {
- public static void Main()
- {
- var numbersPaintings = Console.ReadLine().Split().Select(int.Parse).ToList();
- var input = "";
- while (!(input = Console.ReadLine()).Equals("END"))
- {
- var command = input.Split();
- switch (command[0])
- {
- case "Change":
- if (numbersPaintings.Contains(int.Parse(command[1])))
- {
- var firstIndex = numbersPaintings.IndexOf(int.Parse(command[1]));
- numbersPaintings.RemoveAt(firstIndex);
- numbersPaintings.Insert(firstIndex, int.Parse(command[2]));
- }
- break;
- case "Hide":
- if (numbersPaintings.Contains(int.Parse(command[1])))
- {
- numbersPaintings.Remove(int.Parse(command[1]));
- }
- break;
- case "Switch":
- if (numbersPaintings.Contains(int.Parse(command[1])) && numbersPaintings.Contains(int.Parse(command[2])))
- { //Чудесен заместител на Replace()!
- var index1 = numbersPaintings.IndexOf(int.Parse(command[1]));
- numbersPaintings[index1] = int.Parse(command[2]);
- var index2 = numbersPaintings.IndexOf(int.Parse(command[2]));
- numbersPaintings[index2] = int.Parse(command[1]);
- }
- break;
- case "Insert":
- var place = int.Parse(command[1]) + 1;
- if (numbersPaintings.Count >= place && place >= 0)
- {
- numbersPaintings.Insert(place, int.Parse(command[2]));
- }
- break;
- case "Reverse":
- numbersPaintings.Reverse();
- break;
- }
- }
- Console.WriteLine(string.Join(" ", numbersPaintings));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment