Advertisement
fr3s7ed

Untitled

Jun 24th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.21 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Exam906_Snowmen
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. //Read
  12. //traverse
  13. //element -> attacker index
  14. //integer value -> target index
  15. // conditions
  16.  
  17.  
  18.  
  19. //тук четем входа
  20. List<int> snowmen = Console.ReadLine()
  21. .Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
  22. .Select(int.Parse)
  23. .ToList();
  24.  
  25.  
  26. //по условие имаме че трябва да въртим цикъл докато не остане само един снежен човек
  27. while (snowmen.Count > 1)
  28. {
  29. for (int i = 0; i < snowmen.Count; i++)// тук обхождаме входа който получаваме
  30. {
  31. //с тази if провера проверяваме дали накрая не е останал само един снежен човек който да иска да се
  32. //самоубие тъй като може да остане само един и ако отговаря на дадените условия да се самоубие и да не
  33. // остане никой в листа
  34.  
  35. if (snowmen.Count(x => x != -1) == 1)
  36. {
  37. break;
  38. }
  39. //с -1 маркираме снежните човеци които са мъртви вече
  40. if (snowmen[i] == -1)
  41. {
  42. continue;
  43. }
  44. //тук даваме стойностите на target-а и на attacker-а. Например 4 3 2 1 0
  45. int attacker = i; // attacker-а на 0 индекс се цели в
  46. int target = snowmen[i]; // target-а snowmen[i] което в първата итерация е 4
  47.  
  48. //от условието ако target-а е по-голям от дължината на input-а трябва да го разделим модулно
  49. if (target > snowmen.Count)
  50. {
  51. target %= snowmen.Count;
  52. }
  53.  
  54.  
  55. int absoluteValue = Math.Abs(attacker - target);// това е абсолютната стойност с която ще работим
  56. // по-долу и ще питаме дали е равна на target-а четна или нечетна
  57.  
  58. if (attacker == target)
  59. {
  60. snowmen[attacker] = -1;
  61. Console.WriteLine($"{attacker} performed harakiri");
  62. }
  63. else if (absoluteValue % 2 != 0)//target wins
  64. {
  65. snowmen[attacker] = -1;// в този случай target-а бие и attacker-а умира и за това маркираме
  66. // attacker-а с -1
  67. Console.WriteLine($"{attacker} x {target} -> {target} wins");
  68. }
  69. else if (absoluteValue % 2 == 0)//attacker wins
  70. {
  71. //същата логика прилагаме и тук
  72. snowmen[target] = -1;
  73. Console.WriteLine($"{attacker} x {target} -> {attacker} wins");
  74. }
  75. }
  76. snowmen = snowmen.Where(x => x != -1).ToList(); // на този ред понеже след обработката на листа ни ще имаме
  77. //нещо подобно на -1 -1 -1 2 -1 за това с ламбдата му казваме в snowmen да ми запише само тези числа които са различни от -1
  78. //с други думи да не ми записва тези умрелите снежни човеци
  79. }
  80. }
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement