Advertisement
Again_89

за мими take skip

Feb 25th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace _03_TakeSkip_Rope
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. string input = Console.ReadLine();
  14.  
  15. List<int> numbers = new List<int>();
  16. List<string> nonNumbers = new List<string>();
  17. //тук си правя 2 листа, единия за цифрите, другия за чаровете, обхождам входните данни и проверявам всеки чар от входния стринг
  18. //дали може да се парсне на число с метода TryParse(), ако може го добавям към листа с числа, иначе към другия лист!
  19.  
  20. for (int i = 0; i < input.Length; i++)
  21. {
  22. bool isNumber = int.TryParse(input[i].ToString(), out int number);
  23. if (isNumber)
  24. {
  25. numbers.Add(number);
  26. }
  27. else
  28. {
  29. nonNumbers.Add(input[i].ToString());
  30. }
  31. }
  32.  
  33. List<int> takeList = new List<int>();
  34. List<int> skipList = new List<int>();
  35.  
  36. //тук си правя take и skip лист, минавам през листа на цифрите и в зависимост от условието добавям цифрата към take или skip листа
  37.  
  38. for (int i = 0; i < numbers.Count; i++)
  39. {
  40. if (i % 2 == 0)
  41. {
  42. takeList.Add(numbers[i]);
  43. }
  44. else
  45. {
  46. skipList.Add(numbers[i]);
  47. }
  48. }
  49.  
  50. string result = string.Empty;
  51.  
  52. //тук си правя цикъл с които обхождам едновременно и take и skip листа(те са с еднаква дължина по условие!), използвам метода Take()
  53. //за да мога да взимам чаровете които са ми необходими от nonNumber листа и ги добавям към променливата result, която ми пази краиния
  54. //резултат, накрая използвам метода RemoveRange() за да махам от nonNumbers листа чаровете, които вече съм взел или минал като внимавам
  55. // за да не излезна от range използвам проверка за последната итерация на цикъла!
  56. for (int i = 0; i < takeList.Count; i++)
  57. {
  58. int takeIndex = takeList[i];
  59. int skipIndex = skipList[i];
  60.  
  61. var taken = nonNumbers.Take(takeIndex).ToArray();
  62. var takenInString = string.Join("", taken);
  63. result += takenInString;
  64.  
  65. if (i != takeList.Count - 1)
  66. {
  67. nonNumbers.RemoveRange(0, takeIndex + skipIndex);
  68. }
  69. }
  70.  
  71. Console.WriteLine(result);
  72. }
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement