Advertisement
Prohause

Problem 2 – Grains of Sand

Aug 28th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;//vmest grains e Value
  4.  
  5. namespace zada4a2
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. List<int> seq = Console.ReadLine().Split().
  12. Select(int.Parse).ToList();
  13.  
  14. while (true)
  15. {
  16. string input = Console.ReadLine();
  17. if (input == "Mort")
  18. {
  19. break;
  20. }
  21. string[] data = input.Split();
  22. string command = data[0];
  23.  
  24. if (command == "Add")
  25. {
  26. int numb = int.Parse(data[1]);
  27. seq.Add(numb);
  28. }
  29. else if (command == "Remove")
  30. {
  31. int numb = int.Parse(data[1]);
  32.  
  33. if (seq.Contains(numb))//числото може да не е валиден индекс,
  34. //но да се садържа в поредицата
  35. {
  36. int index1 = seq.IndexOf(numb);
  37. seq.RemoveAt(index1);//няма нужда от допълнителна проверка.
  38. //за да влезе до тук значи числото е част от поредицата
  39.  
  40. }
  41. else
  42. {
  43. int index = numb;
  44. if (index >= 0 && index < seq.Count)
  45. {
  46. seq.RemoveAt(index);//махаме само ако е валиден индекс
  47. }
  48. }
  49. }
  50. else if (command == "Replace")
  51. {
  52. int value = int.Parse(data[1]);
  53. int replacement = int.Parse(data[2]);
  54.  
  55. if (seq.Contains(value))//тази проверка ти гарантира валиден индекс
  56. {
  57. int index1 = seq.IndexOf(value);
  58. seq.RemoveAt(index1);
  59. seq.Insert(index1, replacement);
  60. }
  61.  
  62.  
  63. }
  64. else if (command == "Increase")
  65. {
  66. int value = int.Parse(data[1]);
  67. //пише да се намери първата стойност която не е по малка от value.
  68. //ти правиш точна проверка
  69. List<int> bigger = seq.Where(x => x >= value).ToList();
  70. //вземаме всички които са по големи или равни на value
  71. if (bigger.Count > 0)//имаме числа които отговарят на критерия
  72. {
  73. int needed = bigger.First();//връща първия елемент
  74. for (int i = 0; i < seq.Count; i++)
  75. {
  76. seq[i] += needed;
  77.  
  78. }
  79. }
  80. else
  81. {
  82. int needed = seq.Last();//връща последния елемент
  83. for (int i = 0; i < seq.Count; i++)
  84. {
  85. seq[i] += needed;
  86.  
  87. }
  88. }
  89.  
  90. }
  91. else if (command == "Collapse")
  92. {
  93. int value = int.Parse(data[1]);
  94. seq = seq.Where(x => x >= value).ToList();
  95. //връща стойностите които са по големи или равни на value
  96. }
  97. }
  98.  
  99. Console.WriteLine(string.Join(" ", seq));
  100.  
  101. }
  102. }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement